kubernetes-client / kubernetes-client/java
It's not possible to create a Pod, because of the default overhead value (empty map) in v20.0.0
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 4k
- フォーク
- 2.1k
- 平均マージ
- 2日 9時間
- マージ済み PR(30日)
- 16
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
V1PodSpec と CoreV1Api.createNamespacedPod で使用されるリクエストパスから始め、例を再現して、未設定の overhead がどのようにシリアライズされるかを調べます。生成された payload と想定されるリクエストを比較し、overhead を指定せずに Pod を作成した場合に空のマップが送信されなくなり、成功することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java, kubernetes
- 領域
- api, backend
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100