Kubernetes 可在同一节点上扩展

Kubernetes 可在同一节点上扩展

我通过 Helm 安装了 traefik。然后我用

kubectl scale --replicas=2 deployment traefik -n traefik

现在我有两个 Pod 在同一个节点上运行,尽管第二个节点已启动并正常运行。我该如何告诉它在两个节点上进行扩展?

答案1

如果新 Pod 上的标签选择器与当前 Pod 上的标签匹配,Pod 反亲和性可以防止调度程序将新 Pod 定位在与具有相同标签的 Pod 相同的节点上。
以下例子演示具有匹配标签和标签选择器的 pod 的 pod 反亲和性。

答案2

我理解为什么默认情况下会发生这种情况,因为在 k8s 设计的规模下,总是会有如此多的节点和如此多的 pod 副本,因此这种情况不太可能发生,而对于我们许多在较小集群上的人来说,这非常烦人。下面显示了一个 pod 反亲和性示例。请注意,当我们部署时,匹配表达式中的值是由 Octopus Deploy 自动注入的,您需要自己注入合适的标签。

affinity: 
  podAntiAffinity: 
    preferredDuringSchedulingIgnoredDuringExecution: 
      - podAffinityTerm: 
          labelSelector: 
            matchExpressions: 
              - key: Octopus.Deployment.Id 
                operator: In 
                values: 
                - "deployments-38119" 
            topologyKey: kubernetes.io/hostname 
          weight: 100 

编辑:我还注意到您正在部署代理,在这种情况下您可能需要考虑另一种部署类型,例如 DaemonSet,它可确保每个节点上运行 1 个 pod。

相关内容