文章目录

  • 1. 通过标签绑定
  • 2. 通过node name绑定
  • 3. node的亲和力
  • 4. pod间亲和性和反亲和性
  • 5. node的污点
  • 6. 综合

1. 通过标签绑定

spec:nodeSelector:bigdata-node: bigdatacontainers:- env:

pod只能运行在有bigdata-node: bigdata 标签的node节点

2. 通过node name绑定

spec:nodeName: test-oc08containers:- env:

pod只能运行在名为test-oc08节点上

3. node的亲和力

apiVersion: v1
kind: Pod
metadata:name: with-node-affinity
spec:affinity:nodeAffinity:  #节点选择requiredDuringSchedulingIgnoredDuringExecution: #定义必要规则nodeSelectorTerms:- matchExpressions:- key: e2e-az-NorthSouth  #必须匹配的键/值对(标签)operator: In values:- e2e-az-North #必须匹配的键/值对(标签- e2e-az-South containers:- name: with-node-affinityimage: docker.io/ocpqe/hello-pod

该规则要求将pod放置在节点上,且节点的标签的关键字是e2e-az-NorthSouth,其值是e2e-az-North或者e2e-az-South

  • 您可以In在示例中看到正在使用的运算符。新的节点亲和力语法支持以下运算符:In,NotIn,Exists,DoesNotExist,Gt,Lt。您可以使用NotIn和DoesNotExist实现节点的反亲和行为,也可以使用节点异味来排斥特定节点的吊舱。
  • 如果同时指定nodeSelectornodeAffinity,则必须同时满足两个条件,才能将Pod调度到候选节点上。
  • 如果您指定了多个nodeSelectorTermsnodeAffinity类型相关联的类型,那么如果
    nodeSelectorTerms可以满足其中之一,则可以将Pod调度到一个节点上。
  • 如果您指定matchExpressions与关联的多个nodeSelectorTerms,则只有在
    matchExpressions满足所有条件后,才能将广告连播安排到一个节点上。
  • 如果您删除或更改计划了pod的节点的标签,则pod不会被删除。换句话说,亲和性选择仅在安排豆荚时有效。
  • weightpreferredDuringSchedulingIgnoredDuringExecution的范围是从1-100。对于满足所有调度要求(资源请求,RequiredDuringScheduling亲缘关系表达式等)的每个节点,调度程序将通过遍历此字段的元素并在该节点的匹配项中添加“权重”来计算总和MatchExpressions。然后,将该分数与该节点的其他优先级功能的分数合并。总得分最高的节点是最优选的。
apiVersion: v1
kind: Pod
metadata:name: with-node-affinity
spec:affinity:nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: #定义首选规则- weight: 1  #权重preference:matchExpressions:- key: e2e-az-EastWest operator: In values:- e2e-az-East - e2e-az-West containers:- name: with-node-affinityimage: docker.io/ocpqe/hello-pod

该节点具有标签的关键字为e2e-az-EastWest且其值为e2e-az-East或者e2e-az-West是该Pod的首选项的节点

4. pod间亲和性和反亲和性

apiVersion: v1
kind: Pod
metadata:name: with-pod-affinity
spec:affinity:podAffinity: #亲和性requiredDuringSchedulingIgnoredDuringExecution: - labelSelector:matchExpressions:- key: security operator: In values:- S1 topologyKey: failure-domain.beta.kubernetes.io/zonecontainers:- name: with-pod-affinityimage: docker.io/ocpqe/hello-pod

pod必须部署在一个节点上,这个节点上至少有一个正在运行的pod,这个pod中security=S1

apiVersion: v1
kind: Pod
metadata:name: with-pod-antiaffinity
spec:affinity:podAntiAffinity: #反亲和性preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm:labelSelector:matchExpressions:- key: security operator: In values:- S2 topologyKey: kubernetes.io/hostnamecontainers:- name: with-pod-affinityimage: docker.io/ocpqe/hello-pod

pod不太会部署在一个节点上,这个节点上正在运行的pod中有security=S2

5. node的污点

  • NoSchedule #新pod不会被调到该节点,已经存在的pod不会影响
  • PreferNoSchedule #新pod尽量避免不会调度到该节点,已经存在的pod不会影响
  • NoExecute #新pod不会被调到该节点,已经存在的pod将会被删除
spec:taints:- effect: NoSchedulekey: key1timeAdded: nullvalue: value1

给节点添加污点

spec:tolerations:- key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule"

6. 综合

spec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: nginxoperator: ExistspodAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchLabels:app.kubernetes.io/instance: nginxapp.kubernetes.io/name: nginxtopologyKey: kubernetes.io/hostname

pod调度对有nginx为key的节点保持亲和,对存在标签app.kubernetes.io/instance: nginxapp.kubernetes.io/name: nginx以及存在key为kubernetes.io/hostname的pod的节点表示反亲和

k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点相关推荐

  1. CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|

    一.Pod亲和力和反亲和力概述 ### --- pod亲和力说明~~~ Pod亲和力:尽量将Pod部署在一起 ~~~ Pod反亲和力:不尽量将Pod部署在一起 ### --- 官方地址:~~~ htt ...

  2. CC00212.CloudKubernetes——|KuberNetes高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|

    一.Pod的反亲和力: ### --- 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key:k8s-a ...

  3. 从零开始入门 K8s | Kubernetes 调度和资源管理

    作者 | 子誉  蚂蚁金服高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词**"入门"**,即可下载从零入门 K8s 系列文章 PPT. Kubernet ...

  4. k8s核心技术-Pod(调度策略)_影响Pod调度(污点和污点容忍)---K8S_Google工作笔记0027

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面咱们说了亲和性,其实还有一个调度规则,就是反亲和性 ,根据反亲和性进行调度. 所谓的反亲和性就 ...

  5. 一文搞懂K8S高级特性

    K8S高级特性 K8S中还有一些高级特性有必要了解下,比如弹性扩缩应用(见上文).滚动更新(见上文).配置管理.存储卷.网关路由等. 在了解这些高级特性之前有必要先看几个K8S的核心概念: Repli ...

  6. K8s scheduler 调度:NodeName、NodeSelector与Taint

    1 前言 上篇介绍了k8s调度的预选和优选策略,K8s scheduler 调度:预选和优选策略. 本篇介绍三个影响pod调度的配置:NodeName.NodeSelector与Taint. 2 No ...

  7. 高级调度、中级调度、低级调度的区别

    目录 高级调度 中级调度 低级调度 总结 如果有不正确的话,欢迎指正.下面是个人理解. 高级调度 将作业调入内存,强调的是第一次.将作业调出内存,强调的是最后一次. 等待区--外存 座位--内存 筷子 ...

  8. 【操作系统】-- 处理机调度(高级调度、中级调度、低级调度、调度指标)

    调度的实质是一种资源分配,处理机调度是对处理机资源进行分配. 一.处理机调度的三个层次 1.高级调度(作业调度) 由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此需要确定某种规则来决定将作 ...

  9. K8S污点容忍度调度

    污点类型 解释(相当于做标签) kubectl taint nodes node key=value:NoSchedule 添加effect类型污点,新的pod不能调度过来,老的不影响 kubectl ...

最新文章

  1. 新书上市 | 流行SQL引擎Presto,官方实战指南来了
  2. 教你如何搭建一个骗子举报/信息查询的平台
  3. leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer
  4. [AtCoder Regular Contest 060] E - Tak and Hotels
  5. MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?
  6. jsp--请求转发与重定向
  7. sql语句用变量替换表名_使用内存优化表替换SQL临时表和表变量
  8. 出去转了一转,便利店......
  9. Linux学习笔记(PATH,cp,mv,文档查看cat/more/less/head/tail)
  10. 【5分钟 Paper】Deep Recurrent Q-Learning for Partially Observable MDPs
  11. React/Router
  12. 学院后勤报修系统php_企业智能故障报修系统,助你轻松解决设备维修难题
  13. 野村综合研究所李智慧:日本金融科技是制度先行而非技术先行
  14. ASCII码对照表(Unicode 字符集列表)
  15. 易语言大漠进行字库制作的时候出现不能展示二值化区域
  16. P6647 [CCC 2019] Tourism
  17. 踩坑:文件路径过长问题(超过260字符)
  18. FFOS 1.3 settings usb tethering 流程
  19. 用python实现简单五子棋游戏的练习过程
  20. 虚拟机 Ubuntu 14.04 LTS (64 bits) 下安装 Kurento v6 并运行 kurento-hello-world

热门文章

  1. 【转】全国甲级测绘单位
  2. 百度云ROM刷机工具(百度刷机精灵) v2.0.23 官方正式版
  3. 职称申报时如何选择职称评委会?
  4. 微型计算机剪贴画图片,春节剪贴画图片大全
  5. IT安全行业学习路线图
  6. Cocos2d-X开发教程-捕鱼达人-欧阳坚-专题视频课程
  7. 【策略英雄榜】一起来发现最优秀的策略吧
  8. 教你筛选众多快递中最后物流含有代收点的快递单号
  9. android的file创建,Android运用File创建临时文件,File.createTempFile
  10. 安卓系统手机上网设置方式