Kubernetes Plugin: KubernetesClientException provisioning error

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)

Environment

Related Issues

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.

Have more questions?

0 Comments

Please sign in to leave a comment.