Kubernetes Plugin: KubernetesClientException provisioning error

Article ID:360036006032
1 minute readKnowledge base

Issue

  • Kubernetes plugin is throwing errors while provisioning the agents pointing to io.fabric8.kubernetes.client.KubernetesClientException with a similar stacktrace like the following:

Error in provisioning; agent=KubernetesSlave name: python-pod-0ppnb-qnvc7, template=PodTemplate{, name='python-pod-0ppnb', namespace='jenkins', label='python-pod', nodeUsageMode=EXCLUSIVE, containers=[ContainerTemplate{name='python-agent', image='quay.io/dghubble/python-agent:4462978780179489a5608c480d9c64f8cb61bc7f', workingDir='/home/jenkins/agent', command='cat', ttyEnabled=true}], annotations=[org.csanchez.jenkins.plugins.kubernetes.PodAnnotation@aab9c821]} io.fabric8.kubernetes.client.KubernetesClientException: at io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager$1.onFailure(WatchConnectionManager.java:198) at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.java:571) at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:198) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:206) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

Explanation

The problem is caused by the issue fabric8io/kubernetes-client #1667 that is a dependency of the kubernetes plugin. This issue prevents agent provisioning when the kubernetes URL that configured in the Kubernetes Cloud does not specify any port, for example https://kubernetes.default.

The issue has been resolved in version 4.4.0 of the kubernetes client. The fix is included 1.18.2 of the kubernetes plugin.

Resolution

The solution is to upgrade Kubernetes Plugin to version 1.18.2 or later.

Workaround

The workaround is to change the Kubernetes URL of the Kubernetes Cloud configure under Manage Jenkins  Configure System  Cloud so that the URL contains a specific port. For example change https://kubernetes.default to https://kubernetes.default:443.