讨论对象
主要针对 Node 资源中 Pod 的调度
亲和性 概念
可以实现指定 Pod 应该调度到哪些节点上运行的调度策略,通过标签(Labels)和选择器(NodeSelectors)实现,分为硬性调度和软性调度
反亲和性
概念
通过给节点添加污点(taint),可以阻止一些 Pod 被调度到不适合它们的节点上,还可以把Pod 驱逐到其他 Node 中。
容忍度
容忍度有三种级别:
- NoSchedule
k8s 将不会将 Pod 调度到具有该污点的 Node 上 - PreferNoSchedule
K8S 将尽量避免将 Pod 调度到具有该污点的 Node 上 - NoExecute
K8S 不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去
配置方法
配置污点和容忍度有两种方法:
- YMAL 文件配置
在Pod 的 Spec 字段中使用tolerations字段来添加污点和容忍度 - kubectl 配置
kubectl taint 命令可以为 Node 添加污点并配置容忍度