gpt4 book ai didi

kubernetes - 多区域 Kubernetes 集群和亲和性。如何按区域分发应用程序?

转载 作者:行者123 更新时间:2023-12-01 04:33:02 25 4
gpt4 key购买 nike

我有一个包含 6 个节点的多专区(3 个专区)GKE 集群(1.10.7-gke.1),并且希望每个专区至少拥有我的应用程序的一个副本。

所以我尝试了首选的 podAntiAffinity:

  affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: component
operator: In
values:
- app
topologyKey: failure-domain.beta.kubernetes.io/zone

我第一次安装(从 1 到 3 个副本)我的应用程序时,一切看起来都很好。在下一次滚动更新之后,一切都会变得困惑,我可以在一个区域中拥有 3 个应用程序副本。因为额外的副本被创建,旧的副本被终止。

当我尝试与 requiredDuringSchedulingIgnoredDuringExecution 相同的术语时,一切看起来都不错,但滚动更新不起作用,因为无法安排新的副本(每个区域中已经存在带有“component”=“app”的 pod)。

如何配置我的部署以确保我在每个可用区都有副本?

更新:

我现在的解决方法是在滚动更新期间进行严格的反关联并拒绝额外的 pod(超过 3 个):
  replicaCount: 3 

affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: component
operator: In
values:
- app
topologyKey: failure-domain.beta.kubernetes.io/zone

deploymentStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1

最佳答案

我不认为 Kubernetes 调度程序提供了一种方法来保证所有可用区中的 pod。我相信这是一种尽力而为的方法,可能会有一些限制。

我开了一个 issue检查是否可以通过 NodeAffinity 或 PodAffiity/PodAntiAffinity 支持。

关于kubernetes - 多区域 Kubernetes 集群和亲和性。如何按区域分发应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com