2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes 1.36: SIG-CLI (kubectl) の変更内容

2
Last updated at Posted at 2026-05-13

ここでは、Kubernetes 1.36 の CHANGELOG から SIG-CLI (kubectl) の取り組みについてまとめています。:pencil: は筆者によるコメントです。

新たに追加されたコマンドとフラグ

  • kubectl kuberc set/view コマンド: kubectl のユーザ設定ファイルである kuberc を表示・編集するコマンド。1.35 では alpha だったが、1.36 で beta に昇格した。
  • kubectl run/attach --detach-keys フラグ: kubectl run -itkubectl attach の接続を、container を終了せずに切断するためのキーシーケンスを指定するフラグ(デフォルト ctrl-p,ctrl-q)。
  • kubectl diff --show-secrets フラグ: kubectl diff で Secret の値をマスクせずに表示するフラグ。機密情報が出力されるため注意が必要。
  • kubectl explain -R フラグ: kubectl explain --recursive の短縮形。

変更があったコマンドとフラグ

  • kubectl debug --profile フラグ: デフォルトの debug profile が legacy から general に変更された。
  • kubectl wait --for フラグ: 複数の --for を指定できるようになった。複数の条件は AND 条件として扱われる。

廃止予定のコマンドとフラグ

なし

削除されたコマンドとフラグ

  • kubectl alpha kuberc set/view コマンド: kubectl kuberc set/view への beta 昇格に伴い、alpha 配下のコマンドは削除された。

そのほか、変更の詳細は、 https://github.com/superbrothers/kubernetes-docs/compare/kubernetes-1.35...kubernetes-1.36 で参照できます。

所感

v1.36 においても kubectl に大きな新機能追加はなく、1.35 で入った取り組みが進みつつ、日常的に使うコマンドの使い勝手が改善されています。

kuberc は beta に昇格し、kubectl kuberc set/view として alpha ではない通常のコマンドとして扱えるようになりました。credential plugin の policy や allowlist も設定できるようになっており、kubectl のユーザ設定を kubeconfig から分離する取り組みが進みました。

kubectl wait --for の複数条件対応、kubectl diff --show-secretskubectl run/attach --detach-keys など、運用時に少し困っていた点を埋めるような変更が入っています。

kubectl describe では複数オブジェクトを対象にした場合の Events 表示がデフォルトで省略されるようになりました。なぜか私は kubectl describe は単一オブジェクトのみサポートだと思い込んでいて複数オブジェクトを対象に実行したことがなかったので影響がありませんが、普段から利用されていた方は注意が必要です。

全体として、ここ最近のリリースと同じく kubectl 変更は派手ではありませんが、kuberc、debug、wait、describe など、実際の利用頻度が高いコマンドで改善が進みました。

What's New (Major Themes)

kubectl のユーザ設定をクラスタ設定から分離

kubectl のユーザ設定をカスタマイズするための .kuberc 機能は、引き続き beta として提供され、デフォルトで有効になっています。~/.kube/kuberc ファイルにより、ユーザは alias、デフォルトフラグ、その他の個人設定を、クラスタの endpoint や認証情報を保持する kubeconfig ファイルとは別に保存できます。この分離により、個人設定が CI pipeline や共有 kubeconfig ファイルに影響することを防ぎつつ、異なる cluster や context 間でも一貫した kubectl 体験を維持できます。

Kubernetes v1.36 では、.kuberc に credential plugin の policy(allowlist または denylist)を定義する機能が追加され、より安全な認証運用を強制できるようになりました。必要に応じて、KUBECTL_KUBERC=false または KUBERC=off 環境変数を設定することで、この機能を無効化できます。

この作業は、SIG Auth の協力のもと、SIG CLI が主導する KEP #3104 の一環として行われました。

:pencil: kuberc の詳細は Kubernetes 1.33: SIG-CLI (kubectl) の変更内容 #kubernetes - Qiita で解説しています。

Urgent Upgrade Notes

なし

Changes by Kind

Deprecation

  • credential plugin allowlist の AllowlistEntry.NameAllowlistEntry.Command にリネームされました。 (#137272, pmengelbert) [SIG API Machinery, Auth, CLI and Testing]
    • :pencil: credential plugin は、kubectl が認証情報を得るために外部コマンドを実行する仕組み。kuberc の allowlist は、この外部コマンド実行をユーザ側で制限するための機能。
    • :pencil: kuberckubeconfig とは別に kubectl のユーザ設定を持つための設定ファイルでクラスタの接続先や認証情報ではなく、kubectl の alias、デフォルト option、credential plugin の扱いなど、client 側の好みを切り出すことが目的。デフォルトのパスは ~/.kube/kuberc

API Change

なし

Feature

  • kubectl get node -o wide の出力に ARCH 列が追加されました。 (#132402, astraw99) [SIG CLI]
    • :pencil: こんな感じで出力されるそうです。
      NAME           STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     ARCH    CONTAINER-RUNTIME
      controlplane   Ready    control-plane   9d    v1.32.1   172.30.1.2    <none>        Ubuntu 24.04.1 LTS   6.8.0-51-generic   amd64   containerd://1.7.27
      node01         Ready    <none>          9d    v1.32.1   172.30.2.2    <none>        Ubuntu 24.04.1 LTS   6.8.0-51-generic   arm64   containerd://1.7.27
      
  • kubectl explain -r フラグが --recursive の短縮形として追加されました。 (#135283, laervn) [SIG CLI]
    • :pencil: CHANGELOG では -r フラグと書かれているが、実際には -R フラグ(大文字)が追加されている
  • diff コマンドに、diff 操作中に Secret の値を表示することを明示的に許可する show-secret フラグが追加されました。 (#137019, olamilekan000) [SIG CLI]
    • :pencil: これまで Secret の値は diff では *** でマスクされていて安全だったが、値が本当に変わっているかを確認したい場合には不便だった
    • :pencil: CHANGELOG では --show-secret フラグと書かれているが、実際には --show-secrets フラグが追加されている
  • kubectl apply で管理されているリソースに対して kubectl rollout undo が使われた場合、annotation の不一致による予期しない挙動を防ぐための警告が追加されました。 (#137064, olamilekan000) [SIG CLI]
    • :pencil: apply 用の情報と rollout history の情報が期待どおり対応せず、意図した状態に戻らない可能性があった
  • kubectl wait コマンドで複数の condition がサポートされました。 (#136855, ardaguclu) [SIG CLI and Testing]
    • :pencil: --for フラグを複数回指定できるようになり、複数の条件を指定できるようになって便利
    • :pencil: 複数 condition は AND 条件として順番に待つが、--for=create は無条件で最初に処理される
      kubectl wait --for=condition=Ready --for=create pod/busybox1
      
  • kubectl describe service の出力に appProtocol フィールドが追加されました。 (#135744, ali-a-a) [SIG CLI]
    • :pencil: appProtocol は、TCP などの L4 プロトコルではなく、http などのアプリケーションレベルのプロトコルを示すためのフィールド。
  • kubectl describe の CronJob 出力に timezone フィールドが追加されました。 (#136663, kfess) [SIG CLI]
  • デフォルトの debug profile が legacy から general に変更されました。legacy profile は v1.39 で削除される予定です。 (#135874, mochizuki875) [SIG CLI and Testing]
  • kubectl kuberc コマンドが beta に昇格しました。 (#136643, ardaguclu) [SIG CLI and Testing]
  • ResourceSlice API が存在する場合、kubectl describe node が集約された ResourceSlice を表示し、slice name、driver、pool の詳細を示すように更新されました。 (#131744, ArangoGutierrez) [SIG CLI]
    • :pencil: DRA で扱われるリソースの状態が describe node から見えるようになった
  • schema または field に externalDocs セクションが含まれる場合、kubectl explain が EXTERNAL DOCS セクションを表示するように更新されました。このセクションは、トップレベルリソースでは DESCRIPTION ブロックの後に、個別 field では field description の後に表示されます。short mode の場合や externalDocs がない場合は省略されます。 (#136988, pedjak) [SIG CLI]
    • :pencil: 特に CRD で、フィールドの説明を schema だけで完結させるのが難しい場合に、外部ドキュメントへの導線を kubectl explain に出せるようになった
  • kubectl get ingressclass が default IngressClass に対して (default) マーカーを表示するように更新されました。 (#134422, jaehanbyun) [SIG CLI and Network]
    • :pencil: こうなるそうです。
      NAME                      CONTROLLER             PARAMETERS                                       AGE
      nginx                     k8s.io/ingress-nginx   <none>                                           10s
      nginx-custom              k8s.io/ingress-nginx   IngressParameters.k8s.example.com/nginx-config   10s
      nginx-default (default)   k8s.io/ingress-nginx   <none>                                           10s
      
  • kubectl kuberc setcredentialPluginPolicycredentialPluginAllowlist を設定するための option に対応しました。 (#137300, pmengelbert) [SIG CLI]
  • kubectl exec または kubectl logs が指定された container 名で実行され、その名前の container が見つからない場合、kubectl が指定可能な有効なコンテナ名を一覧表示するようになりました。 (#136973, ardaguclu) [SIG CLI and Testing]
    • :pencil: こんな感じでコンテナ名をリストしてくれるようです。 container nonexistent is not valid for pod foo-two-containers out of: foo-2-c1, foo-2-c2

Documentation

なし

Bug or Regression

  • container を終了せずに detach できるように、kubectl attachkubectl run--detach-keys フラグが追加されました。 (#134997, yangjunmyfm192085) [SIG API Machinery and CLI]
    • :pencil: -it / --stdin --tty フラグを指定していた場合にコンテナを終了せずにデタッチすることができなかったみたい
    • :pencil: デタッチするためのキーシーケンスを上書きする --detach-keys フラグ(デフォルト ctrl-p,ctrl-q)が追加された
  • 複数の StatefulSet Pod を削除する際に、kubectl delete が削除を適切に処理して正常に終了するよう修正されました。 (#135563, yangjunmyfm192085) [SIG CLI, Network and Node]
    • :pencil: kubectl delete は実際に pod が削除されるまで待つが、StatefulSet pods は同じ名前で再作成されるために削除されたかの判定がうまくいっていなかったみたい
    • :pencil: オブジェクト UID を使って同一かどうかを確認するように修正された
  • Pod-level resources を使用している Pod について、kubectl describe node が resource requests と limits を正しく表示するよう修正されました。 (#137394, Nikateen) [SIG CLI]
    • :pencil: Pod-level resources を使用した場合に describe node での pod のリソース表示が 0 になってしまっていたみたい
  • kubectl describe が Custom Resource の field name を表示する際に、大文字の acronym を単一の要素として正しく認識するよう修正されました。 (#135683, uozalp) [SIG CLI]
  • label の追加と削除が両方行われた場合に、kubectl label の出力メッセージが modified を表示するよう修正されました。 (#134849, tchap) [SIG CLI]
  • Pod が ContainerCreating または PodInitializing 状態の場合に、kubectl logs -f が即座に失敗するのではなく container の起動を待つよう修正されました。 (#136411, olamilekan000) [SIG CLI]
    • :pencil: べんり
  • resource がすでに存在する場合、kubectl apply --dry-run=client が merge 済みの manifest 値ではなく server state のみを出力していた bug が修正されました。 (#135513, grandeit) [SIG CLI]
  • Windows で kubectl plugin list が overshadow された plugin を検出できなかった bug が修正されました。 (#136689, kfess) [SIG CLI]
  • total Pod resources の計算が修正されました。 (#137683, ndixita) [SIG CLI and Node]
  • Kubectl: kubectl get ... --output-watch-events -o kyamlkyaml 出力が修正されました。 (#136110, liggitt) [SIG CLI]
    • :pencil: --output-watch-events は通常のオブジェクト出力と構造が異なっていて kyaml printer 側でエラーになってしまっていたみたい
  • Kubectl: terminal size queue delegate が初期化されていない場合に kubectl exec で panic が発生する問題が修正されました。 (#135918, MarcosDaNight) [SIG CLI]
  • Kubectl: resource requests が nil で container status resources が設定されている Pod を処理する際に panic が発生する問題が修正されました。 (#136534, dmaizel) [SIG CLI]
  • Kubectl: attach connection が確立される前に書き込まれた container output を kubectl run -i/-it が取りこぼす問題が修正されました。 (#136010, olamilekan000) [SIG CLI]
  • kubectl scale コマンドの出力に expected replica count が反映されるようになりました。 (#136945, ardaguclu) [SIG CLI and Testing]

Other (Cleanup or Flake)

  • パフォーマンス上の理由から、kubectl describe は単一 object を describe する場合にのみ関連 event を表示するようになりました。複数 object を describe する場合や prefix による fuzzy matching を行う場合でも、--show-events を明示的に渡せば引き続き関連 event が表示されます。 (#137145, mark-liu) [SIG CLI]
    • :pencil: kubectl describe で多くのオブジェクトを対象にすると events 取得の API コールが大量に発行されるのでよろしくなかった
  • kubectl describe -f で削除済み Pod を file から describe した場合の event listing behavior が削除され、すべての resource type で一貫した NotFound error handling になるようになりました。 (#135281, scaliby) [SIG CLI]
  • misleading な SuggestFor entry が kubectl wait から削除され、ユーザが kubectl listkubectl ps と入力した場合に kubectl wait が suggestion として表示されなくなりました。 (#137266, kfess) [SIG CLI and Testing]
    • :pencil: なぜこんな設定が入っていたのかナゾ
  • kustomize dependency が v5.8.1 に更新されました。 (#136892, koba1t) [SIG Architecture and CLI]
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?