如何确保入口控制器 Pod 在包含后端服务的 Pod 的每个节点上运行?

时间:2021-06-09 12:54:57

标签: kubernetes kubernetes-ingress nginx-ingress

我已经设置了 ingress-nginx Helm chart 来在我的集群上设置入口控制器,但默认情况下它只运行一个 pod 实例。

由于我们在 Digital Ocean 的 k8s 集群上运行,我们使用 externalTrafficPolicy: Local 运行以允许 cert-manager 内部访问其他 pod,因此我们的请求网络跃点更少。

为了弹性,我们已将后端服务配置为在至少 2 个节点上运行,因此我们在每个运行后端 Pod 的节点上都有入口控制器是有道理的,以避免不必要的节点间流量.

我们将如何配置入口控制器设置以确保我们在运行后端 Pod 的每个节点上都有一个控制器 Pod?

1 个答案:

答案 0 :(得分:1)

如果您想在每个节点上运行 POD,您可以使用 daemonset

守护者集:https://github.com/nginxinc/kubernetes-ingress/blob/master/deployments/helm-chart/templates/controller-daemonset.yaml

现在,如果您想确保 Nginx 入口控制器 POD 仅在运行后端服务的节点上运行,您可以使用关联和反关联。

亲和力示例:

<input
      #sliderInput
      id="slider"
      [attr.min]="slider.min"
      [attr.Max]="slider.max"
      [attr.step]="slider.stepSize"
      type="range"
      [(ngModel)]="slider.value"
      (input)="onInputSlider()"
      [attr.disabled]="slider.isDisabled ? '' : null"
/>

您可以在以下位置阅读更多信息并找到示例:https://github.com/infracloudio/kubernetes-scheduling-examples/blob/master/podAffinity/README.md