简介:

affinity是K8S 1.2版本后引入的新特性,类似于nodeSelector,允许使用者指定一些pod在Node间调度的约束,目前支持两种形式:

1、 requireDuringSchedulinglgnoreDuringExecution : 必须满足pod调度匹配条件,不满足则不调度(严格匹配,硬匹配)

2、 prequireDuringSchedulinglgnoreDuringExecution: 优先满足pod调度匹配条件,不满足的情况下也会调度到不符合条件的node上(不严格匹配,软匹配)

affinity和nodeSelector对比:

1、亲和于反亲和对目的标签的选择匹配不仅仅支持and,还支持In、Noth、Exists、DoesNotExist、Gt、Lt

*In :标签的值存在匹配列表中(匹配成功就调度到目的node,实现node亲和)

*NotIn :标签的值不存在指定的匹配列表中(不会调度到目的node,实现反亲和)

*Gt :标签的值大于某个值(字符串)

*Lt : 标签的值小于摸个值(字符串)

*Exists :指定的标签存在

2、可以设置软匹配和硬匹配

3、可以对pod定义亲和策略,比如允许哪些pod可以或者不可用被调度到同一台node

注:* 如果定义一个nodeSelectorTerms中通过一个matchExpressions基于列表指定了多个operator条件,则只要满足其中一个条件,就会被调度到相应的节点上,即or的关系,即如果nodeSelectorTerms下面有多个条件的话,只要满足任何一个条件就可以了

*如果定义一个nodeSelectorTerms中都通过一个matchExpressions(匹配表达式)指定key匹配多个条件,则所有的目的条件都必须满足才会调度到对应的节点,即and的关系,如果matchExpressions有多个选项的话,则必须同时满足所有这些条件才能正常调度

常用类型是requireDuringSchedulinglgnoreDuringExecution 硬限制,下面举例应用

1、创建yaml资源

1、编写yaml文件
root@master1:/tmp# cat nodeAffinity-requiredDuring-matchExpressions.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:labels:app: myserver-tomcat-app2-deployment-labelname: myserver-tomcat-app2-deploymentnamespace: myserver
spec:replicas: 1selector:matchLabels:app: myserver-tomcat-app2-selectortemplate:metadata:labels:app: myserver-tomcat-app2-selectorspec:containers:- name: myserver-tomcat-app2-containerimage: tomcat:7.0.94-alpineimagePullPolicy: IfNotPresent#imagePullPolicy: Alwaysports:- containerPort: 8080protocol: TCPname: httpaffinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions: #匹配条件1,有一个key但是有多个values、则只要匹配成功一个value就可以调度- key: disktype   #指定key是disktype,values的值在下面定义operator: In    #operator是操作符,这里操作符是In,In标签的值存在列表中,列表在下面指定的是values:         #列表中指定了两个values,只要能匹配到一个值就满足匹配条件- ssd- xxx- matchExpressions: #匹配条件2,有一个key但是有多个values、则只要匹配成功一个value就可以调度- key: projectoperator: Invalues:- mmm  #即使匹配条件2都不满足也可以调度,因为定义了两个matchExpressions只要有任意一个满足就可以调用。- nnn2、创建资源
root@master1:/tmp# kubectl apply -f nodeAffinity-requiredDuring-matchExpressions.yaml

2、查看资源

调度到了172.31.7.111节点上了,这个节点的标签满足disktype=ssd这个匹配

查看两个node标签,都没有第二个匹配条件标签project=mmm或project=nnn,最后还是调度成功了,因为只需要满足这两个匹配条件的一个即可

此时如果把172.31.7.111节点的标签删除,已经运行的pod不会受到影响,但是如果把pod删除重建就无发调度创建了,因为111节点的标签已经删除了;但是再重新把接节点打上标签后就立刻恢复正常运行

K8S node亲和与反亲和:affinity应用相关推荐

  1. k8s 亲和、反亲和、污点、容忍

    目录 一.K8s调度 二.亲和与反亲和 2.1.Pod和Node 2.2.硬亲和和软亲和 三.污点与容忍 3.1  污点(Taint) 3.1.1  污点的组成 3.1.2  污点的设置和去除 3.2 ...

  2. 图解 K8S(07):调度利器之亲和与反亲和(服务容灾)

    本系列教程目录(已发布): 图解 K8S(01):基于ubuntu 部署最新版 k8s 集群 图解 K8S(02):认识 K8S 中的资源对象 图解 K8S(03):从 Pause 容器理解 Pod ...

  3. k8s调度(nodeName、nodeSelect、节点、pod的亲和和反亲和、Taints)

    k8s调度 nodeName nodeSelector 亲和与反亲和 节点亲和 pod 亲和性和反亲和性 Taints(污点) 调度器通过 kubernetes 的 watch 机制来发现集群中新创建 ...

  4. k8s(八)—调度因素(nodeName、nodeSelector、亲和与反亲和、Taints 污点)、影响pod调度的指令

    1 调度简介 [root@server2 ~]# kubectl get pod -n kube-system 2 影响kubernetes调度的因素 2.1 nodeName(针对节点) [root ...

  5. kubernetes 亲和、反亲和、污点、容忍

    目录 一.K8s调度 二.亲和与反亲和 1.Pod和Node 2.硬亲和和软亲和 三.污点与容忍 3.1  污点(Taint) 3.1.1 污点的组成 3.1.2 污点的设置和去除 3.2  容忍(T ...

  6. 容器亲和、反亲和、污点、容忍以及驱逐的介绍

    nodeSelector简介: 官方文档: https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/ 可用于干预pod的调度结果,例 ...

  7. k8s 亲和 反亲和介绍

    k8s 亲和 & 反亲和介绍 文章内容来自k8s文档翻译以及个人理解和实际使用过程中的实践内容 参考:https://kubernetes.io/docs/concepts/schedulin ...

  8. k8s调度之亲和/反亲和

    Pod的调度流程 在k8s集群中kube-scheduler组件负责为Pod选择运行节点,并由对应节点上的kubelet创建Pod.对于每个未绑定至任何节点的Pod对象,无论是新建.被驱逐等,kube ...

  9. Kubernetes-调度、节点亲和反亲和、pod亲和反亲和、Taints污点的处理

    目录: 一.kubernetes调度介绍 二.nodename节点选择约束 三.nodeSelector 亲和 1.节点亲和 2.节点反亲和 1. pod亲和 2.pod反亲和 四.Taints(污点 ...

最新文章

  1. 四次面试:程序员越来越悲催了
  2. linux netlink 编程示例(一)内核端
  3. oracle 向右去整,使用table表格无端的整体向右偏移一段距离
  4. 拼图推迟将Java 9的发布日期推迟到2017年
  5. Apache的虚拟主机配置
  6. java enum枚举使用例子
  7. python中为什么没有自增或者自减
  8. 汉得能效中台 || Choerodon猪齿鱼商业版V0.23正式上线!
  9. 电路中容易混淆的三角形符号
  10. 华为笔记本键盘说明图_笔记本电脑的的键盘都表示什么意思
  11. php微信摇一摇,申请开通微信摇一摇
  12. 深度探索c++对象模型(5):ctor、dtor、copy
  13. mysql rls_各种类型RLS自适应滤波算法的C++实现
  14. android qq很多压缩包,微信QQ总是占用手机大量内存?这次腾讯推出官方版清理工具了...
  15. 数字电路实验环境 (Quartus II 9.0)
  16. 2.浅浅体验Python编程
  17. (10-4)redis-hash数据类型
  18. oracle EM的安装配置
  19. VSO Downloader 【您连接到互联网的网络适配器没有启动自动检测 】解决办法
  20. Android蓝牙播放如何显示歌曲信息?

热门文章

  1. 人员定位系统如何赋能智慧电厂转型?
  2. android 红外遥控器实现原理
  3. js实现封装MP4格式文件并下载
  4. ByteBuffer.allocate()与ByteBuffer.allocateDirect()方法的区别
  5. ABAP推送企业微信机器人2-markdown类型<转载>
  6. mybase导出html,myBase Desktop
  7. Android 性能测试这样做,新手离开挂人生也不远了。
  8. 概率基础-随机试验-古典概型-几何概型
  9. 大数据热是华而不实吗?大数据和小数据有什么本质区别
  10. 空冥决 页游 一键端 架设 自玩