LoginSignup
1
0

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

Posted at

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

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

  • kubectl config set-credentials コマンド
    • --exec-interactive-mode フラグ: kubeconfig user エントリの exec credentials plugin の InteractiveMode を設定
    • --exec-provide-cluster-info フラグ: kubeconfig user エントリの exec credentials plugin の ProvideClusterInfo を設定

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

  • kubectl create token --duration フラグ: 値に 0 を受け入れるようになり、指定された場合にデフォルト値を使用する
  • kubectl debug --profile フラグ: sysadmin プロファイルが追加

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

なし

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

なし

そのほか

  • kubectl create deployment --image フラグ: ヘルプメッセージだけの変更で --image フラグを複数使用して複数コンテナの Deployment を作成できることを提示

そのほか、細かい変更は、 https://github.com/superbrothers/kubectl-docs/compare/v1.29.0...v1.30.0 で参照できます。

所感

今回も目立った新機能はありませんでしたが、kubectl exec/attach/port-forward コマンドでの kubectl から API サーバ、kubelet の双方向ストリーミングプロトコルを SPDY/3.1 から WebSockets に移行する取り組みが進んでいます (KEP 4006) 。多くの L7 プロキシやロードバランサが SPDY をサポートしていないことが問題になっていました。v1.30 で kubectl exec/attach/cp はベータに昇格しデフォルトで有効化、kubectl port-forward はアルファで提供され、有効には kubectl で KUBECTL_PORT_FORWARD_WEBSOCKETS=true の付与、API サーバで PortForwardWebsockets feature gate を有効にして使用できるようになりました。

What's New (Major Themes)

なし

Urgent Upgrade Notes

なし

Changes by Kind

Deprecation

  • kubectl: apply の廃止予定だった prune-whitelist フラグが削除されました。代わりに prune-allowlist フラグを使用してください。 (#120246, pacoxu)

API Change

なし

Feature

  • kubectl get cronjob の出力に Timezone カラムが追加されました (#122231, ardaguclu)
  • kubectl describeVolumeAttributesClass でより多くの情報が出力されるようになりました (#122640, carlory)
    • :pencil: VolumeAttributesClasskubectl describe に対応していなかったので、この変更で Events が出力されるようになりました
  • kubectl describe: pod template の出力に Suspend to job と Node-Selectors と Tolerations が追加されました (#122618, ivanvc)
    • :pencil: それら以外に BackoffLimit と TTLSecondsAfterFinished も追加されています
  • kubectl get job はジョブリストにステータスを表示するようになりました (#123226, ivanvc)
  • kubectl port-forward over websockets (SPDY トンネリング) が Alpha 機能フラグ環境変数 KUBECTL_PORT_FORWARD_WEBSOCKETS=true を使用して有効にできるようになりました。通信先の API サーバもまたは Alpha 機能フラグ PortForwardWebsockets を有効にしておく必要があります。 (#123413, seans3)
    • :pencil: KEP 4006kubectl exec/attach/port-forward での双方向ストリーミングプロトコルを SPDY/3.1 から WebSockets に移行する取り組みの一貫です。「kubectl と API サーバ間」と「API サーバと kubelet 間」、「kubelet とコンテナランタイム間」の3つがあり、この PR は「kubectl と API サーバ間」の kubectl port-forward コマンドへの対応です。
    • SPDY は2015年以降非推奨となっており、今現在多くのプロキシ、ゲートウェイ、ロードバランサが SPDY をサポートしていません。SPDY は Google が開発したプロトコルで HTTP/2 策定のベースになりました。
    • v1.30 時点でクライアント (kubectl) から API サーバ間の通信に SPDY プロトコルを WebSocket でトンネリングするという手法が取られています。将来的に API サーバと kubelet 間の通信が WebSocket に移行するとクライントから API サーバ、kubelet までの通信で SPDY トンネリングなしに WebSocket に完全に置き換えられる計画です。
    • ユーザにとっての主問題は API サーバ前段のプロキシやロードバランサが SPDY をサポートしているものを選択しなければならなかったことなので (AWS ALB は SPDY をサポートしていません)、SPDY トンネリングでも解決します。なお L4 であれば問題になりません。
  • kubectl debug に 新しい custom フラグが導入され、ユーザが定義済みのプロファイルをカスタマイズできるようになりました (#120346, ardaguclu)
    • :pencil: custom フラグに container spec が JSON 形式で書かれたファイルを指定する形で使用します
  • kubectl config set-credentials コマンドに exec-interactive-modeexec-provide-cluster-info フラグが追加されました (#122023, ardaguclu)
  • Kubectl debug は sysadmin プロファイルを含むようになりました (#119200, eiffel-fl)
    • :pencil: privileged ありで実行されます
  • kubectl で RemoteCommand over WebSockets を無効にするには環境変数フィーチャゲート KUBECTL_REMOTE_COMMAND_WEBSOCKETS=false を明示的に指定する必要があります (#123281, seans3)
    • :pencil: kubectl exec/attach で WebSocket がデフォルトで使用されるようになりました

Documentation

  • unmanagedWarningとの文法的な一貫性を保ちつつ、より分かりやすくするために unmanagedFatal のエラーメッセージを修正しました。この改善により、ユーザにとってより理解しやすいプロンプトが表示されるようになりました。 (#120159, Ithrael)
    • :pencil: kubectl drain コマンドで bare pods の evict に失敗する場合のエラーメッセージを改善したという話で cannot delete Pods that declare no controller (use --force to override) になりました

Bug or Regression

  • kubectl get hpa の実行で使用率の情報にメトリック名が追加されました (#122804, sreeram-venkitesh)
  • kubectl explain でフィールドタイプに enum が定義されている場合にそれらを表示するように修正されました (#123023, ah8ad3)
    • :pencil: べんり
  • API 呼び出し中にエラーが発生した場合、kubectl drain が pod を削除したと判断するバグが修正されました (#122574, brianpursley)
    • :pencil: 例えば drain 中に control-plane ノードが削除されると pod が存在するにも関わらず削除したと判断してしまっていました。エラー処理の条件が甘かったことが原因。
  • kubectl バージョン 1.29.0--attach フラグが無視されるリグレッションが修正されました (#122447, ardaguclu)
  • kubectl logs <pod-name> の使用で pod が見つからなかった際に、エラーメッセージに namespace が含まれるようになりました。以前は "Error from server (NotFound): pods "my-pod-name" not found" というメッセージでした。現在は "Error from server (NotFound): pods "my-pod-name" not found in namespace "default"" のようにメッセージに namespace が反映されます。 (#120111, newtondev)

Other (Cleanup or Flake)

  • kubectl create token duration (期間) にデフォルト値として 0 を受け付けるようになりました (#123565, ah8ad3)

Uncategorized

  • ライブラリとしてインポートしたときに kubectl apply がパニックになる問題が修正されました (#122346, Jefftree)
1
0
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
1
0