ここでは、Kubernetes 1.29 の CHANGELOG から SIG-CLI (kubectl) の取り組みについてまとめています。 は筆者によるコメントです。
新たに追加された主なコマンドとフラグ
-
kubectl delete -i/--interactive
: true の場合、オブジェクトを削除する前に削除対象のオブジェクトをリストする
変更があった主なコマンドとフラグ
なし
廃止予定のコマンドとフラグ
なし
削除されたコマンドとフラグ
なし
そのほか、細かい変更は、 https://github.com/superbrothers/kubectl-docs/compare/v1.28.0...v1.29.0 で参照できます。
所感
今回も SIG-CLI に関連する特出した変更はなく書くことがありません(終)
What's New (Major Themes)(主要な変更)
なし
Urgent Upgrade Notes(必ず一読してからアップグレードしなければならない事項)
なし
Changes by Kind(種類別の変更)
Deprecation(廃止)
なし
API Change(API の変更)
なし
Feature(機能)
-
kubectl node drain
helper にOnPodDeletionOrEvictionStarted
とOnPodDeletionOrEvictionFailed
のコールバックが追加された。kubectl
を拡張している人はこれらの新しいコールバックを使うことでより詳細な設定が可能になる。加えてOnPodDeletedOrEvicted
node drain helper callback が廃止予定になった。 (#117502, @adilGhaffarDev) [sig/cli]-
k8s.io/kubectl/pkg/drain.Helper は drain 動作を制御するヘルパ。リリースノードの
OnPodDeletionOrEvictionFailed
は誤りで「OnPodDeletionOrEvictionStarted
とOnPodDeletionOrEvictionFinished
」が正しい。名前のとおり Pod の削除または Eviction が開始/完了した際に任意の関数を呼び出すことができる。 - https://pkg.go.dev/k8s.io/kubectl/pkg/drain#Helper
-
k8s.io/kubectl/pkg/drain.Helper は drain 動作を制御するヘルパ。リリースノードの
- プラグインからサブコマンドの詳細を出力するように
kubectl help
が変更された (#116752, @xvzf) [sig/cli]-
kubectl help
コマンドで出力されるサブコマンドリストにUser-Installed Plugin Commands:
としてプラグインリストが並ぶようになった
-
- kubectl describe pvc
<PVC>
コマンドの出力の "Used by:" の部分に ephemeral storage volume として<PVC>
を使用する pods をリストするようになった (#120427, @MaGaroo) [sig/cli] - プラグインのサブコマンド解決機能が
beta
に昇格。 (#120663, @ardaguclu) [sig/cli,sig/testing]-
例えば
kubectl-create-foo
プラグインはkubectl create
がすでに存在することからこれまでは使用できなかったが、これを許可する機能。ベータに昇格しデフォルトで有効になった。 - https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/3638-kubectl-plugin-subcommands
-
例えば
-
kubectl delete
の--interactive
フラグがデフォルトで全ユーザーに表示されるようになった (#120416, @ardaguclu) [sig/cli,sig/testing]-
kubectl delete
コマンドで実際にオブジェクトを削除する前に削除対象のオブジェクトリストを確認できる機能。これまではKUBECTL_INTERACTIVE_DELETE
環境変数を付与する必要があったが、昇格してデフォルトで有効になった。 -
This flag is in Alpha.
とあるが v1.29 でベータに昇格しており、これは嘘だ
-
- kubectl イメージの
Dockerfile
が更新され、特定のベースイメージと必須ユーティリティ (bash と jq) が追加された (#119592, @rayandas) [sig/node,sig/cli,sig/testing,sig/release]-
Make our `kubectl` image more useful? · Issue #119567 · kubernetes/kubernetes が提案イシューでもうちょっと便利なツールが入っててもいいじゃんというもの。単独で下記のようなシェルスクリプトが実行できるとうれしいよねとある。
while true; do kubectl get -o json node $THIS_NODE | jq -r '.status.conditions[] | [.type,.status] | @tsv' | grep Ready | cut -f2 > .ready.tmp mv -f file.tmp ready sleep 10 done
-
今回 debian ベースとなり
bash
,grep
,sed
,gawk
,coreutils
,jq
,diffutils
が追加されている - いいんじゃんと思う一方でやりだしたらきりがないのではという気もする
-
Make our `kubectl` image more useful? · Issue #119567 · kubernetes/kubernetes が提案イシューでもうちょっと便利なツールが入っててもいいじゃんというもの。単独で下記のようなシェルスクリプトが実行できるとうれしいよねとある。
Documentation
- 特定の Deployment を指定せずに
kubectl rollout restart
を使用する場合の説明と例が追加された (#120118, @Ithrael) [sig/cli]- namespace に含まれるすべてのオブジェクトが対象になる
Bug or Regression
- netadmin デバッグプロファイルに
CAP_NET_RAW
が追加され、ノードのデバッグ時の privileged が削除された (#118647, @mochizuki875) [sig/cli,sig/testing]-
kubectl debug
コマンドのnetadmin
profile でEphemeralContainer
とDebuggingContainer
が対象の場合というのがより正確。これまではNET_ADMIN
のみが追加されていた。 -
NET_RAW
がないとping
コマンドが実行できない
-
- フルネームのリソースに対しての
kubectl events
がGroupVersion
でイベントをフィルタしない問題が修正された (#120119, @Ithrael) [sig/cli,sig/testing]-
kubectl events --for Resource1.v1.group1/name
のように GVK で書くとフィルタにマッチしていなかったみたい
-
-
kubectl wait --for
での jsonpath 式の扱いが改善された。フィールドの内容にマッチする単純なフィルター式を使用できるようになった。 (#118748, @andreaskaris) [sig/cli,sig/testing]-
kubectl wait --for='jsonpath={.status.conditions[?(@.type=="Ready")].status}=True' pod/busybox1
のように Condition のタイプを指定した条件がこれまで機能してなかったみたい -
単純に
=
で最初に分割してしまっていたことが原因みたい
-
-
kubectl
-kubectl prune v2
: annotation がcontains-group-resources
からcontains-group-kinds
に変更された。これが KEP で定義したものであり、エンドユーザにとってより明確なため。この機能はalpha
だが、以前の annotation を認識する。この移行サポートはbeta
/GA
では削除される予定。 (#118942, @justinsb) [sig/cli]- prune v2 は現在複数の GitOps ツールなどで独自に prune の実装がされてしまっているのを統一する取り組み
-
現在
kubectl apply
に存在する prune 機能は対象のリソースが限定されているなどの多くの問題があり使い物にならない - prune v2 のしくみは個人的には複雑なのでやめたほうがいいんじゃないかと思っている。詳細は https://qiita.com/superbrothers/items/16212fc088bfb2849585#%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1-applyset-%E6%A9%9F%E8%83%BD に以前書いているので参照。
- describe PVC サブコマンドに
--show-events=false
引数を渡すとkubectl
が events を表示しないように修正された (#120380, @MaGaroo) [sig/cli]- 表示されちゃってたみたい
Other (Cleanup or Flake)
- feature flag の値は小文字でも大文字でも使用できるようになったが、名前は一致しなければならない (#121441, @soltysh) [sig/cli]
-
TrUe
でもfAlSe
でもよくなったという話
-
-
1.22
より前のバージョンの ephemeral container legacy server support のサポートが削除された (#119537, @ardaguclu) [sig/cli]- 1.22 より前に実装された ephemeral container のサポートはもうサポートバージョンから離れているしいらないよねってことで削除
-
同じ PR で
DebugOptions
struct に AttachFunc メソッドが追加されている。どうやら debug コマンドを拡張する際にアタッチの処理を変えたいってことらしいが、なぜ同じ PR に入っているのか