It's not possible to create a Pod, because of the default overhead value (empty map) in v20.0.0 #3076
Open
Description
Describe the bug
The default overhead
value of Pod spec in version 20.0.0 is empty map which is causing the following error:
java.lang.RuntimeException: io.kubernetes.client.openapi.ApiException: Message:
HTTP response code: 403
HTTP response body: {"kind":"Status","apiVersion":"((redacted))","metadata":{},"status":"Failure","message":"pods \"foo\" is forbidden: pod rejected: Pod Overhead set without corresponding RuntimeClass defined Overhead","reason":"Forbidden","details":{"name":"foo","kind":"pods"},"code":403}
As a workaround, one can set the overhead
explicitly to null:
V1Pod pod = new V1Pod()
.metadata(new V1ObjectMeta().name("foo"))
.spec(new V1PodSpec()
.overhead(null) // HERE: setting the overhead value to null, to avoid above error.
.addContainersItem(new V1ContainerBuilder()
// omitted
Client Version
e.g. 20.0.0
Kubernetes Version
any version
Java Version
any version
To Reproduce
Create a simple Pod, without specifying anything for overhead
:
V1Pod pod = new V1Pod()
.metadata(new V1ObjectMeta().name("foo"))
.spec(new V1PodSpec()
.addContainersItem(new V1ContainerBuilder()
.withImage("any-image")
.withName("foo-image").build()));
coreV1Api.createNamespacedPod("default", pod).execute();
Expected behavior
Pod creation should be successful but it fails due to overhead: {}
being present in the request payload.
I think, either the default value of overhead
should be null
or when serialising the request, the empty values should be omitted.
KubeConfig
N/A
Server (please complete the following information):
Any
Additional context
N/A