k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点
文章目录
- 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实现节点的反亲和行为,也可以使用节点异味来排斥特定节点的吊舱。 - 如果同时指定
nodeSelector
和nodeAffinity
,则必须同时满足两个条件,才能将Pod调度到候选节点上。 - 如果您指定了多个
nodeSelectorTerms
与nodeAffinity
类型相关联的类型,那么如果
nodeSelectorTerms可以满足其中之一,则可以将Pod调度到一个节点上。 - 如果您指定
matchExpressions
与关联的多个nodeSelectorTerms
,则只有在
matchExpressions满足所有条件后,才能将广告连播安排到一个节点上。 - 如果您删除或更改计划了pod的节点的标签,则pod不会被删除。换句话说,亲和性选择仅在安排豆荚时有效。
weight
在preferredDuringSchedulingIgnoredDuringExecution
的范围是从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: nginx
与app.kubernetes.io/name: nginx
以及存在key为kubernetes.io/hostname
的pod的节点表示反亲和
k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点相关推荐
- CC00210.CloudKubernetes——|KuberNetes高级调度.V13|——|Pod亲和力反亲和力.v01|pod亲和力_同namespace|
一.Pod亲和力和反亲和力概述 ### --- pod亲和力说明~~~ Pod亲和力:尽量将Pod部署在一起 ~~~ Pod反亲和力:不尽量将Pod部署在一起 ### --- 官方地址:~~~ htt ...
- CC00212.CloudKubernetes——|KuberNetes高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|
一.Pod的反亲和力: ### --- 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key:k8s-a ...
- 从零开始入门 K8s | Kubernetes 调度和资源管理
作者 | 子誉 蚂蚁金服高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词**"入门"**,即可下载从零入门 K8s 系列文章 PPT. Kubernet ...
- k8s核心技术-Pod(调度策略)_影响Pod调度(污点和污点容忍)---K8S_Google工作笔记0027
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面咱们说了亲和性,其实还有一个调度规则,就是反亲和性 ,根据反亲和性进行调度. 所谓的反亲和性就 ...
- 一文搞懂K8S高级特性
K8S高级特性 K8S中还有一些高级特性有必要了解下,比如弹性扩缩应用(见上文).滚动更新(见上文).配置管理.存储卷.网关路由等. 在了解这些高级特性之前有必要先看几个K8S的核心概念: Repli ...
- K8s scheduler 调度:NodeName、NodeSelector与Taint
1 前言 上篇介绍了k8s调度的预选和优选策略,K8s scheduler 调度:预选和优选策略. 本篇介绍三个影响pod调度的配置:NodeName.NodeSelector与Taint. 2 No ...
- 高级调度、中级调度、低级调度的区别
目录 高级调度 中级调度 低级调度 总结 如果有不正确的话,欢迎指正.下面是个人理解. 高级调度 将作业调入内存,强调的是第一次.将作业调出内存,强调的是最后一次. 等待区--外存 座位--内存 筷子 ...
- 【操作系统】-- 处理机调度(高级调度、中级调度、低级调度、调度指标)
调度的实质是一种资源分配,处理机调度是对处理机资源进行分配. 一.处理机调度的三个层次 1.高级调度(作业调度) 由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此需要确定某种规则来决定将作 ...
- K8S污点容忍度调度
污点类型 解释(相当于做标签) kubectl taint nodes node key=value:NoSchedule 添加effect类型污点,新的pod不能调度过来,老的不影响 kubectl ...
最新文章
- 新书上市 | 流行SQL引擎Presto,官方实战指南来了
- 教你如何搭建一个骗子举报/信息查询的平台
- leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer
- [AtCoder Regular Contest 060] E - Tak and Hotels
- MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?
- jsp--请求转发与重定向
- sql语句用变量替换表名_使用内存优化表替换SQL临时表和表变量
- 出去转了一转,便利店......
- Linux学习笔记(PATH,cp,mv,文档查看cat/more/less/head/tail)
- 【5分钟 Paper】Deep Recurrent Q-Learning for Partially Observable MDPs
- React/Router
- 学院后勤报修系统php_企业智能故障报修系统,助你轻松解决设备维修难题
- 野村综合研究所李智慧:日本金融科技是制度先行而非技术先行
- ASCII码对照表(Unicode 字符集列表)
- 易语言大漠进行字库制作的时候出现不能展示二值化区域
- P6647 [CCC 2019] Tourism
- 踩坑:文件路径过长问题(超过260字符)
- FFOS 1.3 settings usb tethering 流程
- 用python实现简单五子棋游戏的练习过程
- 虚拟机 Ubuntu 14.04 LTS (64 bits) 下安装 Kurento v6 并运行 kurento-hello-world