k8s節點分配nodeSelector, Affinity和Anti-Affinity 親和性和反親和性


節點選擇器 nodeSelector

  • 節點選擇器 通過匹配一個 節點的Label鍵值對告訴kube scheduler 將pod調度到哪個節點
    kubectl lable node mynode zzz=xxx #給mynode節點添加 zzz=xxx標簽
apiVersion: v1
kind: Pod
metadata:
  name: app01
  labels: 
    app: redis
spec:
  containers:
  - name: redis
    image: redis
    ports:
    - name: redisport
      containerPort: 6379
      protocol: TCP
  nodeSelector:
    zzz: xxx

節點親和力和反親和力 Node Affinity and Anti-Affinity

  • 如果 nodeSelector 與節點上的標簽不匹配,則不會調度 pod。Node Affinity and Anti-Affinity

  • spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution

    • Soft NodeAffinity 和 Anti-Affinity:如果節點標簽存在,Pod 將在那里運行。如果沒有,那么 Pod 將被重新調度到集群內的其他地方。
  • spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution

    • Hard NodeAffinity 和 Anti-Affinity:如果節點標簽不存在,則根本不會調度 Pod。

pod親和力和反親和力 Pod Affinity and Anti-Affinity

pod親和力

  • spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution
    • 用於Soft Pod Affinity。如果首選選項可用,Pod 將在那里運行。如果沒有,Pod 仍然可以安排在其他地方。
  • spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
    • 用於Hard Pod Affinity。如果所需選項不可用,則 Pod 無法運行。

pod反親和力

  • spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution

    • 用於Soft Pod Anti-Affinity。如果首選選項可用,Pod 將在那里運行。如果沒有,Pod 仍然可以被調度到其他地方。
  • spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution

    • 用於Hard Pod Anti-Affinity。如果所需選項不可用,則 Pod 無法運行。
      如果節點上有 xxx=yyy的標簽,反親和力Pod anti-affinity 不會將pod調度到該節點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM