当Kubernetes上的Jenkins奴隶吊舱大量涌入运行的吊舱时,它们就会消失

时间:2020-10-07 17:04:31

标签: jenkins kubernetes horizontal-pod-autoscaling

我有一个在单个Pod中运行Jenkins master的Kubernetes集群,每个构建都在一个单独的slave Pod中运行。当有许多构建在运行时,有许多吊舱正在上下旋转,通常我会在这样的工作中看到错误:

Cannot contact slave-jenkins-0g9p0: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@197b6a38:JNLP4-connect connection from 10.10.3.90/10.10.3.90:54418": Remote call on JNLP4-connect connection from 10.10.3.90/10.10.3.90:54418 failed. The channel is closing down or has closed down
Could not connect to slave-jenkins-0g9p0 to send interrupt signal to process

吊舱(例如slave-jenkins-0g9p0)消失了。没有痕迹存在。观看kubectl describe pod slave-jenkins-0g9p0之类的信息时,没有错误消息,只是停止存在。

我有一种感觉,因为有多个Pod上下旋转,Kubernetes试图平衡节点上的负载并重新安排Pod的时间,但是杀死它之后,它无法在另一个节点上旋转Pod。我不确定。也许有一种方法可以告诉K8s将吊舱绑定到一个节点,直到其退出为止?我不太确定如何/如何调试这种情况。

  • Kuberentes版本:v1.16.13-eks-2ba888在AWS EKS上
  • 詹金斯版本:2.257
  • Kubernetes插件版本1.27.2

任何建议将不胜感激

谢谢

更新:

我已经上传了三个从属Pod清单示例here,您可以在其中查看分配的资源。上述问题发生在每个运行的吊舱中。

节点池由Kubernetes自动缩放器(v1.14.6)控制,并使用AWS t3a.large(2个CPU,8GB内存)实例。

更新2:

我相信我已经找到问题的原因。我禁用了cluster-autoscaler](https://github.com/kubernetes/autoscaler)(v1.14.6),问题停止了。

所以似乎正在发生的事情是自动缩放器正在删除从属pd正在运行的节点。我知道污点可以用来告诉自动缩放器不要删除节点,但是有一种方法可以动态地做到这一点,即如果某个特定的容器正在运行,它将不会删除节点。无需开发新的东西。

0 个答案:

没有答案
相关问题