1

我试图了解使用podAntiAffinity规则来避免被安排在同一节点上是否是一种好习惯。从而在我的 Kubernetes 集群上传播'。PodDeploymentPod

affinity:
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 100
      podAffinityTerm:
        labelSelector:
          matchExpressions:
          - key: "app.kubernetes.io/name"
            operator: In
            values:
            - "foo"
        topologyKey: "kubernetes.io/hostname"

文档建议避免使用podAntiAffinity具有数百个节点的集群,这表明使用它们会对性能产生影响。

另外,如果我不使用它们,那么默认的调度程序行为难道不是 space outPod吗?

我想它的用途也Deployment很重要。例如,将apodAntiAffinity用于 Redis 缓存是有意义的,但在这种情况下使用 a 不是更有意义DaemonSet吗?另外,对 Web 服务器有什么建议Pod

4

1 回答 1

0

如果您想通过以更具表现力的方法匹配指定条件来在某些节点上调度 Pod,则可以使用 Pod/Node Affinity 规则。我不确定您是否可以使用它来避免被安排在同一个节点上。如果你不使用关联规则,那么 kube-scheduler 会寻找可行的节点来调度 pod,这通常不是同一个节点。

您可以通过定义关联规则让 kube-scheduler “思考”更多,这是正常的,在大型集群中它会影响性能。

另外要了解 kube-scheduler 默认情况下如何迭代节点,您可以查看此文档

于 2019-03-21T10:20:40.773 回答