在 Kubernetes 中,可以通过修改节点的标签(Labels)和 Pod 的调度限制(Scheduling Constraints)等方式来设置节点的亲和力和反亲和力。以下是几种常用的方法:

修改节点的标签:可以使用 kubectl label nodes = 命令为节点添加或删除标签。例如,要将名为 node-1 的节点添加标签 disk=ssd,可以使用以下命令:

  1. kubectl label nodes node-1 disk=ssd

使用 Node Selector:可以在 Pod 的 YAML 文件中添加 nodeSelector 字段,指定 Pod 只能在标记了特定 label 的节点上运行。例如,下面的 YAML 文件中指定 Pod 只能在标记了 disk=ssd 的节点上运行:

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: my-pod
  5. spec:
  6. containers:
  7. - name: nginx
  8. image: nginx
  9. nodeSelector:
  10. disk: ssd

使用亲和性和反亲和性:可以在 Pod 的 YAML 文件中添加 affinity 字段,指定 Pod 的亲和性和反亲和性规则。例如,下面的 YAML 文件中指定 Pod 要求被调度到标记了 disk=ssd 且同时标记了 zone=us-east 的节点上:

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: my-pod
  5. spec:
  6. containers:
  7. - name: nginx
  8. image: nginx
  9. affinity:
  10. nodeAffinity:
  11. requiredDuringSchedulingIgnoredDuringExecution:
  12. nodeSelectorTerms:
  13. - matchExpressions:
  14. - key: disk
  15. operator: In
  16. values:
  17. - ssd
  18. - key: zone
  19. operator: In
  20. values:
  21. - us-east

注意:在使用亲和性和反亲和性规则时应谨慎操作,避免引起系统崩溃或影响其他应用程序的正常运行。建议在操作前进行必要的测试和评估,并备份重要数据。

文档更新时间: 2023-03-17 07:17   作者:admin