kubernetes 如何在节点组中的每个节点上分配至少1个Pod

jgovgodb  于 2023-05-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(199)

我们有一个节点组,组中的每个节点都有相同的标签acme/node-type: worker。此节点组中有2个节点,它们是spot示例。
我们有一个部署,其中有3个副本存在于此节点组上。我们使用nodeAffinity实现了这一点

spec:
  affinity:
   nodeAffinity:
     requiredDuringSchedulingIgnoredDuringExecution:
       nodeSelectorTerms:
       - matchExpressions:
         - key: acme/node-type
           operator: In
           values:
           - worker

我们注意到一个问题,当一个spot示例被重新调用时,所有的pod都移动到第二个节点。在一个节点上运行所有pod并不理想,因为有2个可用的pod。我们希望3个复制副本部署分布在2个节点上。
我们希望节点组中的每个节点上至少有**1个pod。这可能吗?
尝试1:

topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: acme/node-type
        whenUnsatisfiable: ScheduleAnyway
        labelSelector:
          matchLabels:
            acme/node-type: worker

jmo0nnb3

jmo0nnb31#

您可能需要配置topology spread constraints
关于whenUnsatisfiable: ScheduleAnyway
还可以考虑使用descheduler,这有助于在删除节点时做出最佳决策

相关问题