K8S的Pod调度模式

Jan 于 2024-10-11 发布 浏览量

定向调度

设置哪个node就调度到哪个nodeimgimg

node2

imgimg

如果node不存在,pod处于等待状态(pending)

imgimg

标签同理

imgimg 修改为”abc”(即不存在的标签) img 调度失败 imgimg


亲和性调度

Affinity主要分为三类:

· nodeAffinity(node亲和性): 以node为目标,解决pod可以调度到哪些node的问题

· podAffinity(pod亲和性) : 以pod为目标,解决pod可以和哪些已存在的pod部署在同一个拓扑域中的问题

· podAntiAffinity(pod反亲和性) : 以pod为目标,解决pod不能和哪些已存在pod部署在同一个拓扑域中的问题

设置requiredDuringSchedulingIgnoredDuringExecution: # 硬限制

设置匹配标签的key为nodeenv,且value是”xxx”或”yyy”的节点

img

Pod创建失败

img

查看详细信息img

将xxx更换为pro(node1的标签),成功调度到node1

img


污点

img

准备节点node1,暂时停止node2节点

为node1设置PreferNoSchedule污点(低级),创建pod1正常运行

img

将node2设置为NoSchedule(中级),创建pod2

发现pod1正常运行,pod2停止状态

img

将node1设置为NoExecute(高级),创建pod3

三个pod全部停止img


容忍

img**

先创建一个普通pod

img

之前为node1设置了NoExecute,因此处于pending状态

img

添加容忍img

Pod正常运行

img

作于2024年10月11日