2.10.2. 使用 pod 反关联性
Pod 反关联性 与 节点反关联性 稍有不同。如果没有其他适当的位置来部署 pod,则可以违反节点反关联性。Pod 反关联性可以设置为必要的或偏好的。
apiVersion: v1 kind: Pod metadata: name: with-pod-antiaffinity spec: affinity: podAntiAffinity: 1 preferredDuringSchedulingIgnoredDuringExecution: 2 - weight: 100 3 podAffinityTerm: labelSelector: matchExpressions: - key: docker-registry 4 operator: In 5 values: - default topologyKey: kubernetes.io/hostname
本例假定容器镜像 registry pod 具有标签 docker-registry=default
。Pod 反关联性可以使用任何 Kubernetes 匹配表达式。
最后一步是在 /etc/origin/master/scheduler.json 中启用 MatchInterPodAffinity
调度程序 predicate。进行了这样的设置后,如果只有两个基础架构节点可用,并且一个节点发生重新引导,容器镜像 registry pod 会被禁止在另一节点上运行。oc get pods
会报告 pod 未就绪,直到有合适的节点可用为止。一旦某个节点可用,并且所有 pod 恢复到就绪状态,下一个节点就可以重启。