简介:

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. 关于学习Python的一点学习总结(46->属性访问)
  3. python编程基础是什么-编程学习第一步,让你20天搞定Python编程
  4. 面向对象回顾(构造函数、覆盖和重载、Query接口的list方法和iterate方法、面向对象的六原则一法则、反射、内部类)
  5. 英语笔记3(git)
  6. learnpython3thehardway视频_LearnPython3theHardWay__Excercise 13 Parameters, Unpacking, Variables
  7. session和cookie的区别和联系
  8. 修改 class_明明有class为什么还是报ClassNotFoundException?
  9. 飞信php接口 web service
  10. mysql集群 自增_为什么我们要从MySQL迁移到TiDB?
  11. 通过读取原始星历文件数据推算GPS卫星位置坐标
  12. pe安装uefi linux,华硕U盘装机维护系统v2017 WIN10PE UEFI ISO版
  13. netbean背景色
  14. 数据库中什么是内联接、左外联接、右外联接?
  15. python 爬虫之字体反反爬
  16. 接口自动化测试之接口测试基础
  17. STM32中断分配——抢占优先级与响应优先级
  18. jsplumb 系列(一)
  19. C++: 情侣最美身高差(团体程序设计天梯赛)
  20. 海尔微型台式计算机重装系统,海尔台式电脑怎么进行U盘一键重装win10系统

热门文章

  1. 同时上3种手段,保障Quartz不重复执行任务
  2. 网络图片异步加载(用到多线程(线程池),java回调机制,图片缓存,图片的动画)
  3. 李扬:“互联网+”时代的视频通信
  4. 哈希表企业应用-淘宝分布式文件系统核心存储引擎
  5. 选择分集matlab程序,matlab053 协作分集技术的仿真分析
  6. 《黑马头条》SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目
  7. asterisk事件监控
  8. 利用Bing Search API进行搜索
  9. 同步Google Calendar 与 Ubuntu日历
  10. matlab采样频率怎么编程,关于频率和采样频率