Kubernetes上的节点亲和力相同

时间:2020-05-12 16:54:41

标签: kubernetes

我有nginx部署容器作为前端,并通过ClusterIP服务与uwsgi部署容器进行通信。

我希望nginx容器优先使用在其节点上运行的uwsgi容器。

是否可以在不命名节点的情况下以节点亲缘关系做到这一点?

3 个答案:

答案 0 :(得分:0)

如果要在与uwsgi pod相同的节点上运行nginx pod,请使用pod关联。

        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - uwsgi

有关pod亲和力和反亲和力的更多详细信息,请点击here

答案 1 :(得分:0)

可以通过node affinity来实现Pod的供应以及在同一节点上的订购/计划。但是,如果您想让Kubernetes做出决定,则必须使用inter-pod affinity

也只是为了验证您是否以正确的方式进行了所有操作,请参考 pod-affinity example

答案 2 :(得分:0)

据我了解,您有nginx吊舱和uwsgi吊舱, 和Nginx Pod将流量代理到uwsgi Pod。

并且您正在尝试使nxinx Pod将流量代理到同一节点上的uwsgi Pod。

以前发布的答案仅部分有效。让我解释一下原因。

使用PodAffinity确实可以将nginx和uwsgi pod一起安排,但不会影响loadBalancing。
Nginx <-> uwsgi负载平衡将保持不变(随机)。

最简单的方法是在同一容器中运行nginx容器和uwsgi容器,并使它们与本地主机通信。这样,您可以确保:

  1. nginx和uwsgi总是安排在同一节点上
  2. 通过localhost进行的连接会迫使流量停留在pod内。

让我知道这种方法是否可以解决您的问题,或者出于某种原因,我们应该尝试其他方法。