亲和性调度功能包括节点亲和性(NodeAffinity)和Pod亲和性(PodAffinity)两个维度的设置。
NodeAffinity:Node亲和性调度
NodeAffinity意为Node亲和性的调度策略,是用于替换NodeSelector的全新调度策略,目前有两种节点亲和性表达。
- RequireDuringSchedulingIgnoredDuringExecution:必须满足指定的规则才可以调度Pod到Node上(功能与NodeSelector很像,但是使用的是不同的语法),相当于硬限制。
- PrefeeredDuringSchedulingIgonredDuringExecution:强调优先满足指定规则,调度器会尝试调度Pod到Node上,但并不强求,相当于软限制。多个优先级规则还可以设置权重(weight)值,以定义执行的先后顺序。
IgnoredDuringExecution的意思是:如果一个Pod所在的节点在Pod运行期间标签发生了变更,不再符合该Pod的节点亲和性需求,则系统将忽略Node上Label的变化,该Pod能继续在该节点运行。
下面的例子设置了NodeAffinity调度的如下规则。
- requiredDuringSchedulingIgnoredDuringExecution 要求只运行在amd64的节点上(beta.kubernetes.io/arch In amd64)
- preferredDuringSchedulingIgnoreDuringExecution 的要求是尽量运行在磁盘类型为ssd(disk-type In ssd)的节点上
代码如下:
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelect

本文详细介绍了Kubernetes中的NodeAffinity和PodAffinity调度策略。NodeAffinity包括RequiredDuringSchedulingIgnoredDuringExecution(硬限制)和PreferredDuringSchedulingIgnoredDuringExecution(软限制)两种类型,允许设置节点亲和性和优先级。PodAffinity则基于运行中的Pod标签进行调度,分为亲和性和互斥性两种情况。通过具体的配置示例,展示了如何设置这两种调度策略,以确保Pod在集群中的合理分布和运行。
最低0.47元/天 解锁文章
463





