优先在节点之间分发副本
Prefer dispatch replicas among nodes
我是 运行 一个 Kubernetes 集群,由 3 个节点和 GKE 组成。我向 Kubernetes 请求 backend
pods 的 3 个副本。 3 pods 没有很好地在节点之间调度以提供高可用性服务,它们通常都在 2 个节点上。
我希望 Kubernetes 尽可能多地调度 pods 以便在每个节点上都有一个 pod,但如果它们比节点多 backend
pods 则不会使 deployment/scale-up 失败。
是否可以用 preferredDuringSchedulingIgnoredDuringExecution
做到这一点?
尝试像这样设置一个首选的反关联规则:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- "my_app_name"
topologyKey: "kubernetes.io/hostname"
这将尝试将 pods 调度到尚未具有相同标签 运行 的 pod 的节点上。之后它对所有人都是免费的(因此在确保每个节点上至少有 1 个 运行 之后它不会均匀地分布它们)。这意味着在扩展之后,您最终可能会得到一个节点有 5 个 pods,而其他节点每个节点有 1 个 pod。
我是 运行 一个 Kubernetes 集群,由 3 个节点和 GKE 组成。我向 Kubernetes 请求 backend
pods 的 3 个副本。 3 pods 没有很好地在节点之间调度以提供高可用性服务,它们通常都在 2 个节点上。
我希望 Kubernetes 尽可能多地调度 pods 以便在每个节点上都有一个 pod,但如果它们比节点多 backend
pods 则不会使 deployment/scale-up 失败。
是否可以用 preferredDuringSchedulingIgnoredDuringExecution
做到这一点?
尝试像这样设置一个首选的反关联规则:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- "my_app_name"
topologyKey: "kubernetes.io/hostname"
这将尝试将 pods 调度到尚未具有相同标签 运行 的 pod 的节点上。之后它对所有人都是免费的(因此在确保每个节点上至少有 1 个 运行 之后它不会均匀地分布它们)。这意味着在扩展之后,您最终可能会得到一个节点有 5 个 pods,而其他节点每个节点有 1 个 pod。