kubernetes - 在节点之间首选调度副本

标签 kubernetes google-cloud-platform google-kubernetes-engine high-availability

我正在使用GKE运行3个节点的Kubernetes集群。我问Kubernetes 3个backend pod的副本。 3个Pod在节点之间分配不佳,无法提供高可用性服务,它们通常都位于2个节点上。
我希望Kubernetes尽可能多地调度Pod以在每个节点上具有Pod,但是如果它们的backend Pod比节点更多,则不要使部署/扩展失败。

可以用preferredDuringSchedulingIgnoredDuringExecution做到吗?

最佳答案

尝试设置首选的抗亲和力规则,如下所示:

affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: "app"
                operator: In
                values: 
                - "my_app_name"
          topologyKey: "kubernetes.io/hostname"

这将尝试将Pod调度到尚未在其上运行相同标签的Pod的节点上。之后,它对所有人都是免费的(因此,在确保每个节点上至少有1个正在运行的情况下,它不会平均分配它们)。这意味着在扩展后,您可能最终会得到一个节点,该节点有5个容器,其他节点每个具有1个容器。

关于kubernetes - 在节点之间首选调度副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025390/

相关文章:

Azure AKS : Kubernetes pod keeps showing CrashLoopBackOff status after assigning static IP

http - 增加 K8S 入口的 URL 长度限制

kubernetes - 在 kubeadm 集群上配置 PodSecurityPolicy

nginx - 如何修复 Kubernetes Ingress Controller 从集群中切断节点的问题

mysql - 使用 Cloud sql 代理连接到多个 CloudSQL 实例?

node.js - Google Cloud Tasks 在 5 分钟后重新排队任务,忽略更大的 dispatchDeadline 设置

bash - 如何使用CTRL + C退出并杀死正在运行的Docker容器?

google-kubernetes-engine - 尝试在 GKE 上升级 Pod 时出错

python - 无法从云函数正确访问GCS对象

kubernetes - 缩减Kubernetes中的视频 session 软件