当前位置: 首页 > article >正文

kubernetes第七天

1.影响pod调度的因素

nodeName   节点名

resources     资源限制

hostNetwork   宿主机网络

污点

污点容忍

Pod亲和性

Pod反亲和性

节点亲和性

2.污点

通常是作用于worker节点上,其可以影响pod的调度

语法:key[=value]:effect

effect:[ɪˈfekt]

effect必须是NoSchedule、PreferNoSchedule或NoExecute。

NoSchedule: [noʊ,ˈskedʒuːl]

该节点不再接收新的Pod调度,但不会驱赶已经调度到该节点的Pod。

PreferNoSchedule: [prɪˈfɜːr,noʊ,ˈskedʒuː] 
该节点可以接受调度,但会尽可能将Pod调度到其他节点,换句话说,让该节点的调度优先级降低啦。

NoExecute:[ˈnoʊ,eksɪkjuːt] 
该节点不再接收新的Pod调度,与此同时,会立刻驱逐已经调度到该节点的Pod。

1.查看节点污点

kubectl describe nodes

2.创建10个pod,发现pod调度在232和233节点上

3.给k8s232打上污点

kubectl taint node k8s232 wudianmingzi=wudian:NoExecute


4.查看污点kubectl describe nodes|grep Taints,发现此时已经有污点

5.查看pod信息,发现此时所有pod都调度到k8s233上

6.移除污点:kubectl taint node k8s232 wudianmingzi-

7.移除污点,从新创建pod之后,pod能重新调度到pod上

命令总结:

查看污点:
kubectl describe nodes|grep Taints
制造污点帮助信息
kubectl taint --help
制造污点
kubectl taint node 节点名 key=value:NoExecute
value可省略
移除污点
kubectl taint node k8s232 key-

NoExecute  移除现在节点所有的pod
NoSchedule 不移除,但是不会有新的pod
PreferNoSchedule  优先级降低

3.污点容忍

pod.spec.tolerations

spec:
      # 配置Pod的污点容忍
      tolerations:
        # 指定污点的key
        # 若不指定key,则operator的值必须为Exists,表示匹配所有的key
      - key: qq
        # 指定污点的value
        value: ww
        # 指定污点的effect,有效值为: NoSchedule, PreferNoSchedule,NoExecute
        # 若不指定则匹配所有的影响度。
        effect: NoExecute
        # 表示key和value的关系,有效值为Exists, Equal。
        #    Exists:
        #      表示存在指定的key即可,若配置,则要求value字段为空。
        #    Equal:
        #      默认值,表示key=value。
        operator: Equal
      - key: web
        operator: Exists
      - key: node-role.kubernetes.io/master
        operator: Exists
      # 如果不指定key,value,effect,仅配置"operator: Exists"表示无视任何污点!
      #- operator: Exists

例1:匹配所有key为web,value值为空,effect为NoExecute的污点

tolerations:
- key: "web"
  operator: "Exists"  # 当value为空时,使用Exists表示key存在即可
  effect: "NoExecute"

例2:匹配所有key为test,值为version1,effect为所有的污点

tolerations:
- key: "test"
  operator: "Equal"  # 当指定了具体的value时,使用Equal进行匹配
  value: "version1"
  effect: "*"  # "*"表示匹配所有可能的effect值

例3:忽视所有污点

tolerations:
- operator: "Exists"  # 使用Exists且不指定key和effect,表示容忍所有污点

补充:实现pod调度到特点两个pod上

给节点打标签:

kubectl label nodes k8s231 key=value

选择调度的节点(所有节点忽视所有污点,如上例三配置)

spec:
  nodeSelector:
     key=value
     ...
注意:节点必须包含所有这里的标签,才会被选上

所有节点删除标签

kubectl label nodes --all  key-

但是这样子当两个节点,比如节点a,key=value1,key2=value2,此时无法满足,所有引入了亲和性。

4.节点亲和性

查看相关信息

三种类型:节点亲和性,pod亲和性,pod反亲和性

节点亲和性:

affinity:
        # 定义节点的亲和性
        nodeAffinity:
          # 定义硬限制
          requiredDuringSchedulingIgnoredDuringExecution:
            # 定义节点的匹配条件
            nodeSelectorTerms:
              # 基于节点的标签进行匹配
            - matchExpressions:
                # 指定标签的key
              - key: hobby
                # 指定标签的value
                values:
                - eat
                - sleep
                # 指定key和value之间的对应关系,有效值如下:
                #   In:
                #     key的值必须在vlaues内。要求values不能为空。
                #   NotIn:
                #     和In相反。要求values不能为空。
                #   Exists:
                #     只要存在指定key即可,vlaues的值必须为空。
                #   DoesNotExist:
                #     只要不存在指定key即可,vlaues的值必须为空。
                #   Gt:
                #     表示大于的意思,values的值会被解释为整数。
                #   Lt:
                #     表示小于的意思,values的值会被解释为整数。
                operator: In


http://www.kler.cn/a/487845.html

相关文章:

  • 如何将 DotNetFramework 项目打包成 NuGet 包并发布
  • 埋地碳钢设备间 雨水回用一体化设备 微型雨水处理站
  • micro-app【微前端系列教程】通信
  • 【Git】修改已提交人的用户名和邮箱
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之21 项目主页:基于资源的交互系统--以RESTful 风格设计构建 聊天窗口
  • 手机租赁平台开发全解析 让租赁变得更简单便捷
  • C#调用MyLibxl来生成EXCEL的订货清单
  • 【Docker项目实战】使用Docker部署Enclosed笔记应用程序
  • Linux 进程入门:带你走进操作系统的核心地带(1)
  • NoETL 自动化指标平台如何帮助企业实现战略目标与执行目标对齐?
  • 【服务器】ubuntu20.04安装cuda12.01(使用runfile安装)
  • 3d打印材料是塑料么?pla petg
  • 网络运维与网络安全介绍之二的补
  • 【Notepad++】Notepad++如何删除包含某个字符串所在的行
  • 三甲医院等级评审八维数据分析应用(七)--数据资产管理与价值挖掘篇
  • iOS中的设计模式(二)- 原型模式
  • 面对移动安全挑战,应用加固是不可忽视的防线
  • MySQL的学习
  • 2012mfc,几种串
  • Vivado中Tri_mode_ethernet_mac的时序约束、分析、调整——(一)时序约束的基本概念