当前位置: 首页 > 知识库问答 >
问题:

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

顾兴昌
2023-03-14

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

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

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

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

共有1个答案

濮阳振
2023-03-14

如果要在每个节点上运行POD,可以使用守护程序集。

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

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

亲缘关系示例:

affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
            - key: role
              operator: In
              values:
              - app-1
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: component
                operator: In
                values:
                - nginx-ms
          topologyKey: "kubernetes.io/1-hostname"

您可以阅读更多内容并在以下网址找到示例:https://github.com/infracloudio/kubernetes-scheduling-examples/blob/master/podAffinity/README.md

 类似资料:
  • 在尝试了各种提供程序(bare kubernetes、openshift、aws eks)后,我们发现即使节点有足够的资源(cpu、ram、hdd),在达到~110个POD后,新的POD仍处于挂起状态,除了事件之外没有任何事件或错误 我们已经尝试在kubelet、scheduler等中搜索任何相关的日志--但除了前面提到的这个事件之外什么也没有。 是否有人成功地运行了每个节点超过110个豆荚?我们

  • 我已经在节点(node1)上的pod(pod1)上部署了一个Spring Boot应用程序。我还在不同节点(node2)上的另一个pod(pod2)上部署了JMeter。我试图从POD2执行自动负载测试。为了执行负载测试,我要求为每个测试用例重新启动pod1。如何从POD2重新启动pod1?

  • 我已经设置了普罗米修斯,通过跟踪普罗米修斯留档来监控库本内斯的指标。 普罗米修斯现在有很多有用的指标。 但是,我看不到任何引用我的pod或节点状态的指标。 理想情况下-我希望能够绘制pod状态(运行,挂起,CrashLoopBackoff,错误)和节点(NodeNow,就绪)。 这个度量单位在哪里?如果没有,我可以添加到某个地方吗?怎么做?

  • 我正在运行一个带有RHEL7.8 BareMetal计算节点的OCP4.6。我们正在集群上运行功能和HA测试。我们在这个集群上的主要应用程序是一个包含大约250个吊舱的StatefulSet。 关闭节点后,在该节点上运行的吊舱进入状态,并停留在那里。由于这是一个状态集,所以在原始pod结束终止之前,pod不能在另一个节点上重新启动。 查看K8S的文档--我发现在节点关闭后StatefulSet p

  • 我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存