Edited at
Z LabDay 9

Kubernetes 1.13: SIG CLI の変更内容


はじめに

本記事では、Kubernetes 1.13 の CHANGELOG から SIG-CLI の取り組みについてまとめています。

新たに追加されたコマンド



  • kubectl diff: 現在のオンラインの設定(クラスタに保存されているオブジェクト)とファイルまたは標準入力で指定された設定の差分を出力する

廃止予定のコマンド


  • kubectl convert

削除されたコマンド


  • kubectl run-container

  • kubectl alpha

その他、オプションの追加、削除は https://github.com/superbrothers/kubectl-docs/compare/v1.12.0...v1.13.0 を参照してください。


アップグレード前に確認すべき内容


廃止予定となっていた kubectl run-container コマンドが完全に削除されました。代わりに kubectl run コマンドを使用してください。



廃止予定の機能


kubectl convert コマンドは廃止予定となりました。将来のリリースで削除される予定です。


:pencil: kubectl convert コマンドは、Kubernetes の内部 API に依存しており、kubectl は内部 API への依存を取り除かなければならないとのことで廃止されることになったようです。では代わりにどうするかというと、1つの方法は kubectl apply したのちに好きなバージョンで kubectl get する。もう1つの方法は kubectl plugin を作るのもいいねとのこと。


SIG CLI の主な取り組み


v1.13 のリリースで SIG CLI は主にサーバサイドプリンティングとその kubectl サポート、サーバサイドドライラン機能をベースとした kubectl diff コマンドの仕上げといった過去のリリースから取り組んできた機能の安定性に注力しました。また、メインリポジトリ1からの離脱に備えて kubectl のコードの分離を続けています。最後に、コミュニティからの素晴らしいサポートとフィードバックにより、新しいプラグイン機構をベータに昇格しました。


:pencil: 新しいプラグイン機構のつかいかたは、kubectl のプラグイン機能 kubectl plugin を使おう! で解説しています。


SIG CLI の主な変更点


#70436: kubectl apply で deployment strategy が切り替えられるように

:pencil: これまで Deployment オブジェクトの spec.strategy フィールドを明示的にクリアしなければ rollingUpdate から recreate に変更することができなかったようです。この変更によって切り替えられるようになりました。


#70443: kubectl plugin list がいつも同じ順序でプラグインのパスを出力するように

:pencil: それに加えてプラグインにエラーを見つけた場合、それらを一度に全て出力するようになりました。以前はエラーが見つかるとその時点で出力してコマンドが終了してしまいました。


#70311: kubectl get --continue-on-error がエラーが見つかっても終了しないように

:pencil: kubectl get --continue-on-error コマンドはエラーが見つかっても終了しないことが期待されていたところ、そのような挙動になっていなかったようです。


#70740: kubectl get が結果が空かつソートを指定したときにランタイムエラーにならないように


#68655: kubectl cordon/uncordon/drain が複数のノードを指定可能に

:pencil: これまで kubectl cordon/uncordon/drain コマンドは1つのノードしか指定できませんでした。この変更で一度のコマンドで複数のノードを対象にできるようになりました。べんりですね。

$ kubectl cordon node01 node02 node03


#70699: admin/edit/view のユーザが kubectl rollout の実行に失敗する問題を修正

:pencil: controllerrevisions の read access の権限が admin/edit/view ロールに追加されていなかったことで、kubectl rollout コマンドの実行に失敗していたようです。


#70039: kubectl rollout undo は存在しない revision にロールバックしようとするとエラーになるように

:pencil: この変更に加えて、kubectl rollout undo は廃止予定の extensions/v1beta1 の rollback API を利用しなくなりました。この変更によりロールバックしても Event が作成されなくなるようです。


#71006: kubecl run でデフォルトで作成される Deployments が apps/v1


#65189: kubectl cp がリモートパスとしてパスショートカット (../) をサポート


#69344: kubectl apply --prune の dry-run 時の出力を修正

:pencil: kubectl apply コマンドを --prune オプションありで実行するときに --dry-run オプションありとなしで表示される内容が異なっていたようで、--dry-run オプションのありなしに関わらず同じ内容が出力されるように修正されました。


#69389: kubectl wait が watch のエラーを対処するように