我已经设置了ingress nginx Helm图表来在集群上设置ingress控制器,但是默认情况下它只运行一个pod实例。
由于我们在Digital Ocean的k8s群集上运行,因此我们使用externalTrafficPolicy:Local来允许cert manager在内部访问其他POD,因此我们的请求网络跳数更少。
为了获得弹性,我们已将后端服务配置为至少在2个节点上运行,因此我们在每个节点上都有入口控制器,这些节点上运行了后端pod,以避免不必要的节点间流量。
我们将如何配置入口控制器设置,以确保在后端吊舱运行的每个节点上都有一个控制器吊舱?
如果要在每个节点上运行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内存