在 Google Container Engine 上更新至 Kubernetes 1.5.2。 然后开始出现以下错误:
Failed to count the # of live instances on Kubernetes
为了解决这个问题,我将 Jenkins(至 2.32.2)和 Kubernetes 插件(至 0.10)升级到最新版本。
之后,我开始收到以下错误:
Feb 08, 2017 9:51:52 PM hudson.TcpSlaveAgentListener$ConnectionHandler run
WARNING: Connection #5 failed
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readFully(DataInputStream.java:169)
at hudson.TcpSlaveAgentListener$ConnectionHandler.run(TcpSlaveAgentListener.java:213)
Feb 08, 2017 9:51:57 PM org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback call
SEVERE: Error in provisioning; slave=KubernetesSlave name: default-6126d6e4fb5, template=org.csanchez.jenkins.plugins.kubernetes.PodTemplate@47404ab7
java.lang.IllegalStateException: Containers are terminated with exit codes: {jnlp=255}
at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback.call(KubernetesCloud.java:600)
at org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback.call(KubernetesCloud.java:532)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
最佳答案
通过将从属容器名称更改为 jnlp 而不是默认值(参见图片),解决了最后一个错误。谷歌文档显示该名称应该是默认名称,但似乎通过这些更新,这不是让该系统正常工作的正确方法。
看起来更新后的 kubernetes-plugin 创建了两个容器(一个包含您指定的镜像的容器,另一个包含默认的 jnlp 镜像)。如果您的图像名称不是 jnlp,那么该插件将在从属 Pod 中运行两个容器...这似乎导致了连接问题。
关于jenkins - Kubernetes 上 Jenkins 从属设备的连接已断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42124958/