在 Kubernetes 中,可以通过修改节点的标签(Labels)和 Pod 的调度限制(Scheduling Constraints)等方式来设置节点的亲和力和反亲和力。以下是几种常用的方法:
修改节点的标签:可以使用 kubectl label nodes
kubectl label nodes node-1 disk=ssd
使用 Node Selector:可以在 Pod 的 YAML 文件中添加 nodeSelector 字段,指定 Pod 只能在标记了特定 label 的节点上运行。例如,下面的 YAML 文件中指定 Pod 只能在标记了 disk=ssd 的节点上运行:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx
image: nginx
nodeSelector:
disk: ssd
使用亲和性和反亲和性:可以在 Pod 的 YAML 文件中添加 affinity 字段,指定 Pod 的亲和性和反亲和性规则。例如,下面的 YAML 文件中指定 Pod 要求被调度到标记了 disk=ssd 且同时标记了 zone=us-east 的节点上:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx
image: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disk
operator: In
values:
- ssd
- key: zone
operator: In
values:
- us-east
注意:在使用亲和性和反亲和性规则时应谨慎操作,避免引起系统崩溃或影响其他应用程序的正常运行。建议在操作前进行必要的测试和评估,并备份重要数据。
文档更新时间: 2023-03-17 07:17 作者:admin