K8S node亲和与反亲和:affinity应用
简介:
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应用相关推荐
- k8s 亲和、反亲和、污点、容忍
目录 一.K8s调度 二.亲和与反亲和 2.1.Pod和Node 2.2.硬亲和和软亲和 三.污点与容忍 3.1 污点(Taint) 3.1.1 污点的组成 3.1.2 污点的设置和去除 3.2 ...
- 图解 K8S(07):调度利器之亲和与反亲和(服务容灾)
本系列教程目录(已发布): 图解 K8S(01):基于ubuntu 部署最新版 k8s 集群 图解 K8S(02):认识 K8S 中的资源对象 图解 K8S(03):从 Pause 容器理解 Pod ...
- k8s调度(nodeName、nodeSelect、节点、pod的亲和和反亲和、Taints)
k8s调度 nodeName nodeSelector 亲和与反亲和 节点亲和 pod 亲和性和反亲和性 Taints(污点) 调度器通过 kubernetes 的 watch 机制来发现集群中新创建 ...
- k8s(八)—调度因素(nodeName、nodeSelector、亲和与反亲和、Taints 污点)、影响pod调度的指令
1 调度简介 [root@server2 ~]# kubectl get pod -n kube-system 2 影响kubernetes调度的因素 2.1 nodeName(针对节点) [root ...
- kubernetes 亲和、反亲和、污点、容忍
目录 一.K8s调度 二.亲和与反亲和 1.Pod和Node 2.硬亲和和软亲和 三.污点与容忍 3.1 污点(Taint) 3.1.1 污点的组成 3.1.2 污点的设置和去除 3.2 容忍(T ...
- 容器亲和、反亲和、污点、容忍以及驱逐的介绍
nodeSelector简介: 官方文档: https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/ 可用于干预pod的调度结果,例 ...
- k8s 亲和 反亲和介绍
k8s 亲和 & 反亲和介绍 文章内容来自k8s文档翻译以及个人理解和实际使用过程中的实践内容 参考:https://kubernetes.io/docs/concepts/schedulin ...
- k8s调度之亲和/反亲和
Pod的调度流程 在k8s集群中kube-scheduler组件负责为Pod选择运行节点,并由对应节点上的kubelet创建Pod.对于每个未绑定至任何节点的Pod对象,无论是新建.被驱逐等,kube ...
- Kubernetes-调度、节点亲和反亲和、pod亲和反亲和、Taints污点的处理
目录: 一.kubernetes调度介绍 二.nodename节点选择约束 三.nodeSelector 亲和 1.节点亲和 2.节点反亲和 1. pod亲和 2.pod反亲和 四.Taints(污点 ...
最新文章
- 四次面试:程序员越来越悲催了
- linux netlink 编程示例(一)内核端
- oracle 向右去整,使用table表格无端的整体向右偏移一段距离
- 拼图推迟将Java 9的发布日期推迟到2017年
- Apache的虚拟主机配置
- java enum枚举使用例子
- python中为什么没有自增或者自减
- 汉得能效中台 || Choerodon猪齿鱼商业版V0.23正式上线!
- 电路中容易混淆的三角形符号
- 华为笔记本键盘说明图_笔记本电脑的的键盘都表示什么意思
- php微信摇一摇,申请开通微信摇一摇
- 深度探索c++对象模型(5):ctor、dtor、copy
- mysql rls_各种类型RLS自适应滤波算法的C++实现
- android qq很多压缩包,微信QQ总是占用手机大量内存?这次腾讯推出官方版清理工具了...
- 数字电路实验环境 (Quartus II 9.0)
- 2.浅浅体验Python编程
- (10-4)redis-hash数据类型
- oracle EM的安装配置
- VSO Downloader 【您连接到互联网的网络适配器没有启动自动检测 】解决办法
- Android蓝牙播放如何显示歌曲信息?