k8s-----9、pod 影响调度的因素

news2024/11/16 12:05:40

资源限制和节点选择器

  • 1、pod资源限制
  • 2、节点选择器(pod属性)
  • 3、 节点亲和性(nodeAffinity)(pod属性)
    • 3.1 硬和软亲和性
    • 3.2 反亲和性
  • 4、污点(taint)和污点容忍(节点属性)
    • 4.1 定义
    • 4.2 应用场景
    • 4.3 常用命令
    • 4.4 污点值(三个)
    • 4.5 污点容忍

1、pod资源限制

  • 通过前面资源限制部分进行理解
  • yaml文件中的resources字段中的request部分的资源分配,会根据这个规则来找到足够支撑的节点。

2、节点选择器(pod属性)

  • 节点选择器标签也可以影响Pod的调度

  • 首先为节点打一个标签,然后在进行yaml文件的编写。

    # 首先需要为节点node1打一个标签。dev表示开发环境   prod表示测试环境
    [root@master example]# kubectl label nodes node1 env_role=dev
    [root@master example]# kubectl get nodes node1 --show-labels   #查看打的标签
    [root@master example]# cat nginx.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      nodeSelector:    ## nodeSelector是节点选择器标签
        env_role: dev
      containers:
        - name: nginx
          image: nginx:1.14
          imagePullPolicy: Always
    
    

在这里插入图片描述

3、 节点亲和性(nodeAffinity)(pod属性)

3.1 硬和软亲和性

  • 亲和性分为硬亲和性和软亲和性和反亲和性。
  • 硬亲和性表示约束条件必须满足。
  • 软亲和性表示尝试满足,不保证一定能够满足。
  • 常用的一些操作符(operator)有: In 、NotIn、Exists 、Gt、Lt、DoesNotExists
[root@master example]# cat affinity.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: env_role
            operator: In
            value:
            - dev
            - test
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: group
            operator: In
            value:
            - otherprod
  containers:
  - name: webdemo
    image: nginx

在这里插入图片描述

3.2 反亲和性

  • 即将操作符换为NotIn DoesNotExists

4、污点(taint)和污点容忍(节点属性)

4.1 定义

  • 污点 taints 是定义在节点上的键值型属性数据,用于让节点拒绝将 Pod 调度运行于其上, 除非 Pod 有接纳节点污点的容忍度。

  • 容忍度 tolerations 是定义在 Pod 上的键值属性数据, 用于配置可容忍的污点,且调度器将 Pod 调度至其能容忍该节点污点的节点上或没有污点 的节点上

  • 节点亲和性使得 Pod 对象被吸引到一类特定的节点 (nodeSelector 和 affinity) ,污点提供让节点排斥特定 Pod 对象的能力

4.2 应用场景

  • 污点不做普通的分配,其针对一些特定的场景
  • 1、专用节点
  • 2、配置特定硬件节点,比如作为固态硬盘的节点
  • 3、基于Taint驱逐

4.3 常用命令

 # 1、查看当前节点的污点
 [root@master example]# kubectl describe nodes master | grep Taint
 Taints:             node-role.kubernetes.io/master:NoSchedule

 # 2、为节点添加污点(effect是污点的三个值)
 kubectl taint node <node-name> <key>=<value>:<effect>  
 # 3、为节点删除污点
 kubectl taint node <node-name> <key>:<effect>-  # 删除指定污点
 kubectl taint node <node-name> <key>-           #删除该key对应的所有污点
[root@master example]# kubectl taint node node1 env_role=yes:NoSchedule
node/node1 tainted
[root@master example]# kubectl describe nodes node1 | grep Taint
Taints:             env_role=yes:NoSchedule
[root@master example]# kubectl create deployment web --image=nginx 
[root@master example]# kubectl scale deployment web --replicas=3
deployment.apps/web scaled

[root@master example]# kubectl get pods -o wide  #发现node1加了污点后,调度都到了node2上
NAME                  READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
nginx                 1/1     Running   1          23h     10.244.2.3    node2   <none>           <none>
web-96d5df5c8-nmtvl   1/1     Running   0          35s     10.244.2.8    node2   <none>           <none>
web-96d5df5c8-qszwk   1/1     Running   0          35s     10.244.2.7    node2   <none>           <none>
web-96d5df5c8-r9x7z   1/1     Running   0          54s     10.244.2.6    node2   <none>           <none>

4.4 污点值(三个)

  • 1、NoSchedule : 该节点不会被调度
  • 2、 preferNoSchedule : 尽量不会被调度
  • 3、 NoExecute: 不会被调度,且会驱逐node到已有的pod

4.5 污点容忍

  • 加了污点容忍后,节点可能会被调度到
  • 有等值判断和存在性判断两种。即相等就容忍和存在污点键就容忍
spec:
  tolerations:
  - key: "污点的key"
    operator: "Equal"或者"Exists"   
    value: "污点的value"
    effect: "污点的三个值"
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Janus: Data-Centric MoE 通讯成本分析(2)

文章链接&#xff1a;Janus: A Unified Distributed Training Framework for Sparse Mixture-of-Experts Models 发表会议: ACM SIGCOMM 2023 (计算机网络顶会) 系统学习&#xff1a;Janus: 逆向思维&#xff0c;以数据为中心的MoE训练范式&#xff08;1&#xff09; 目录 前…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与&#xff09; ||&#xff08;或&#xff09; 两真&#xff08;||左侧为真&#xff0c;||右侧为真&#xff09; 两假&#xff08;||左侧为假&#xff0c;右侧为假&#xff09; 一真一假&#xff08;||一侧为假&#xff0c;另一侧为…

接口自动化必学的20个难点,学完至少涨5k

难点1&#xff1a;接口文档的不完整性 当我开始设计接口自动化测试用例时&#xff0c;我发现接口文档非常不完整。有些必要的字段没有说明&#xff0c;有些接口没有文档&#xff0c;这给我带来了很大的困难。 解决方案&#xff1a;与开发人员进行沟通&#xff0c;尽可能补充接口…

【Java集合类面试十】、HashMap中的循环链表是如何产生的?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;HashMap中的循环链表是如…

单片机矩阵键盘

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是矩阵键盘&#xff1f;1.独立键盘2.矩阵键盘变化1变化2变化3 3. 通过变型&#xff0c;举一反三&#xff0c;就可以实现4*4的矩阵键盘扫描 二、使用步骤…

一文教你学会使用Cron表达式定时备份MySQL数据库

各位小伙伴大家好&#xff0c;今天我就来讲述一下作为一个运维&#xff0c;如何解放自己的双手去让服务器定时备份数据库数据&#xff0c;防止程序操作数据库出现数据丢失。 mysql_dump_script.sh脚本文件 #!/bin/bash#保存备份个数&#xff0c;备份7天数据 number7 #备份保存…

使用Kali进行实验---主机发现

主机发现 【实训目的】 掌握主机扫描的工作原理&#xff0c;学会使用ping等扫描工具&#xff0c;发现网络当中活跃的主机。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通…

数据结构与算法第一课

文章目录 数据结构什么是数据结构数据结构相关单位 物理结构与逻辑结构物理结构逻辑结构 算法一个案例认识算法的重要性时间复杂度与空间复杂度时间复杂度事前计算时间复杂度与事后判断时间复杂度函数的渐进式变化常见函数的时间复杂度最坏时间与平均时间 空间复杂度 先看下目录…

使用vite搭建前端项目

1、在vscode 终端那里执行创建前端工程项目&#xff0c;其中shop-admin为项目名称&#xff1a; npm init vite-app shop-admin 提示如需安装其他依赖执行npm install ....,否则忽略(第三步再讲)。 2、执行npm run dev 命令直接运行创建好的项目&#xff0c;在浏览器打开链接…

变量的引用

1、变量 和 数据 都是保存在 内存 中的 2、在 Python 中 函数的参数传递以及返回值都是靠引用传递的 引用的概念 在 Python 中变量 和 数据 是分开存储的&#xff1b;数据 保存在内存中的一个位置&#xff1b;变量 中保存着数据在内存中的地址&#xff1b;变量 中 记录数据的…

初步认识Java

文章目录 一、什么是Java1、Java语言的重要性2、Java语言的发展史3、Java语言的特性 二、初识Java的main方法1、main方法示例2、运行Java程序3、JDK、JRE、JVM之间的关系 三、注释四、标识符 一、什么是Java Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法…

依靠继承与聚合,实现maven搭建分布式项目

简介聚合 对于复杂的Maven项目&#xff0c;一般建议采用多模块的方式来设计开发&#xff0c;便于后期维护管理。但是构建项目时&#xff0c;如果每次都需要按模块一个一个进行构建会十分麻烦&#xff0c;而Maven的聚合功能就可以很好的解决这个问题&#xff0c;当用户对聚合模…

软件企业知识库应用场景?如何搭建软件企业知识库?

想要减少人工干预、减少不必要的时间和人力成本、快速获取准确信息……这些应用场景对于我们企业来说是非常渴望在短期内实现的。 软件企业知识库 因为传统知识库仅仅是存储&#xff1a;知识只是“存储”&#xff0c;根本用不起来&#xff0c;缺乏有效的管理方式和储存载体&am…

【项目设计】网络对战五子棋(下)

我不再装模作样地拥有很多朋友&#xff0c;而是回到了孤单之中&#xff0c;以真正的我开始了独自的生活。有时我也会因为寂寞而难以忍受空虚的折磨&#xff0c;但我宁愿以这样的方式来维护自己的自尊&#xff0c;也不愿以耻辱为代价去换取那种表面的朋友。 文章目录 一、项目设…

理解Hash表

注&#xff1a;本文翻译自 https://www.baeldung.com/cs/hash-tables 1 介绍 有效管理数据的技术是计算机科学的传统热点。除了存储数据之外&#xff0c;从存储中高效地恢复数据是另一个相关问题。 即使使用最好的算法处理某些特定的数据&#xff0c;如果没有优化数据管理&a…

Linux C语言开发-D2vi编辑器使用

三种模式基础 命令行模式、插入模式和底行模式 :! [命令]&#xff1a;可在命令行模式下执行命令 :w test1.cc可备份当前编辑的文件 :r head.h可为当前文件引入头文件 u&#xff1a;撤销 命令行进入插入模式&#xff1a; i&#xff1a;从当前光标位置之前开始插入 …

mac安装+配置python3环境

一、python3下载 官网下载 https://www.python.org/ 二、python3安装 打开下载好的.pkg文件一直继续确认即可。 三、验证是否安装成功 打开终端&#xff0c;输入python3&#xff0c;如果返回python对应的版本信息&#xff0c;则安装成功。 四、python配置 如果需要输入…

c语言刷题(第8周)

输入整数m,n&#xff08;m&#xff1c;n&#xff09;&#xff0c;输出[m,n]之间所有能被3&#xff0c;不能被4整除的所有数并求和&#xff0c;输出时每行显示5个数。 题干输入整数m,n&#xff08;m&#xff1c;n&#xff09;&#xff0c;输出[m,n]之间所有能被3&#xff0c;不…

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--作业

0. 内容 1. T1 1. 下载EuRoc数据集&#xff08;optional&#xff09; 因为作业主要使用Ch2生成的数据&#xff0c;所以这一步也是可选的&#xff0c;但是为了整个系统的bring up&#xff0c;可以先用EuRoc数据集跑起来。 下载EuRoc数据集&#xff0c;SLAM相关数据集链接 2.…

windows平台下Qt Creator的下载与安装流程

下载 下载地址&#xff1a;https://download.qt.io/archive/ 下载界面 进入qt或者qtcreator都可以 版本选择 这里我选择进入qt进行下载&#xff0c;进入之后有多个版本可以选择。 注意&#xff1a;从Qt5.15版本开始&#xff0c;Qt公司不在提供开源离线安装程序&#xff0c;此…