何时何地使用Kubernetes Pod关联性规则

时间:2019-02-28 11:43:51

标签: kubernetes kubernetes-pod kubernetes-deployment

我试图了解使用podAntiAffinity规则而不是在我的Pod中使用Deployment来避免被安排在同一节点上是一种好习惯。因此,将Pod散布到我的Kubernetes集群中。

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

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

此外,如果我不使用它们,是否不是默认的调度程序行为来分隔Pod

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

1 个答案:

答案 0 :(得分:0)

如果要通过在更具表现力的方法中匹配指定条件来安排某些节点上的Pod,请使用Pod / Node Affinity规则。我不确定是否可以使用它来避免在同一节点上进行调度。 如果您不使用亲缘关系规则,那么kube-scheduler会在其上寻找可行的节点来调度pod,并且该节点通常不是同一节点。

通过定义相似性规则,可以使kube-scheduler更加“思考”,这是正常的,在大型集群中,它可能会影响性能。

还要了解默认情况下kube-scheduler如何在节点上进行迭代,您可以检查this documentation

相关问题