【Kubernets】K8S亲和性配置相关说明
- IT业界
- 2025-09-15 04:15:02

K8S亲和性配置相关说明 配置说明**Kubernetes 亲和性配置详细说明** **一、亲和性类型****二、节点亲和性(Node Affinity)****1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution****2. 软策略:preferredDuringSchedulingIgnoredDuringExecution** **三、Pod 亲和性(Pod Affinity)****1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution****2. 软策略:preferredDuringSchedulingIgnoredDuringExecution** **四、Pod 反亲和性(Pod Anti-Affinity)****1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution****2. 软策略:preferredDuringSchedulingIgnoredDuringExecution** **五、拓扑域(Topology Key)****六、完整示例****七、总结**相关文献 配置说明 Kubernetes 亲和性配置详细说明
Kubernetes 的亲和性(Affinity)是一种调度策略,用于控制 Pod 调度到特定的节点或与其他 Pod 共存/分离。通过亲和性配置,可以优化资源分配、提高性能以及增强高可用性。
一、亲和性类型
Kubernetes 提供了两种主要类型的亲和性配置:
Node Affinity(节点亲和性) 控制 Pod 调度到哪些节点上。
Pod Affinity 和 Pod Anti-Affinity(Pod 亲和性和反亲和性) 控制 Pod 是否与某些已存在的 Pod 共存或分离。
二、节点亲和性(Node Affinity) 1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution 定义:必须满足条件,否则 Pod 不会被调度。示例: 假设我们希望 Pod 只能调度到标签为 disk-type=ssd 的节点上:affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disk-type operator: In values: - ssd 2. 软策略:preferredDuringSchedulingIgnoredDuringExecution 定义:优先选择符合条件的节点,但如果找不到符合条件的节点,Pod 仍然可以被调度到其他节点。示例: 假设我们希望 Pod 优先调度到标签为 cpu-num=16 的节点上:affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: cpu-num operator: In values: - "16"
三、Pod 亲和性(Pod Affinity) 1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution 定义:Pod 必须与某些已存在的 Pod 共存,否则不会被调度。示例: 假设我们希望新 Pod 与标签为 app=my-app 的 Pod 共存:affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - my-app topologyKey: kubernetes.io/hostname 2. 软策略:preferredDuringSchedulingIgnoredDuringExecution 定义:优先将 Pod 调度到与某些已存在的 Pod 共存的节点上。示例: 假设我们希望新 Pod 优先与标签为 env=production 的 Pod 共存:affinity: podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: env operator: In values: - production topologyKey: kubernetes.io/hostname
四、Pod 反亲和性(Pod Anti-Affinity) 1. 硬策略:requiredDuringSchedulingIgnoredDuringExecution 定义:Pod 必须与某些已存在的 Pod 分离,否则不会被调度。示例: 假设我们希望新 Pod 不与标签为 app=my-app 的 Pod 共存:affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - my-app topologyKey: kubernetes.io/hostname 2. 软策略:preferredDuringSchedulingIgnoredDuringExecution 定义:优先将 Pod 调度到与某些已存在的 Pod 分离的节点上。示例: 假设我们希望新 Pod 优先不与标签为 env=production 的 Pod 共存:affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: env operator: In values: - production topologyKey: kubernetes.io/hostname
五、拓扑域(Topology Key)
在 Pod 亲和性和反亲和性中,topologyKey 定义了拓扑域的范围。常见的拓扑键包括:
kubernetes.io/hostname:表示单个节点。failure-domain.beta.kubernetes.io/zone:表示可用区。failure-domain.beta.kubernetes.io/region:表示区域。例如,使用 failure-domain.beta.kubernetes.io/zone 可以实现跨可用区的调度策略。
六、完整示例
以下是一个综合使用节点亲和性和 Pod 亲和性的完整示例:
apiVersion: v1 kind: Pod metadata: name: example-pod labels: app: example spec: containers: - name: example-container image: nginx affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disk-type operator: In values: - ssd preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: cpu-num operator: In values: - "16" podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - my-app topologyKey: kubernetes.io/hostname podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: env operator: In values: - production topologyKey: kubernetes.io/hostname七、总结
通过亲和性配置,可以灵活地控制 Pod 的调度行为,从而优化资源分配和提高系统的可靠性。以下是关键点:
节点亲和性:控制 Pod 调度到哪些节点。Pod 亲和性:控制 Pod 与哪些已存在的 Pod 共存。Pod 反亲和性:控制 Pod 与哪些已存在的 Pod 分离。拓扑域:定义调度的范围(如节点、可用区或区域)。根据实际需求,合理配置亲和性规则,能够显著提升 Kubernetes 集群的性能和稳定性。
相关文献【Kubernets】Kubernets资源类型Deployment详细介绍
【Kubernets】K8S亲和性配置相关说明由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Kubernets】K8S亲和性配置相关说明”
 
               
               
               
               
               
               
               
   
   
   
   
   
   
   
   
   
   
  