はじめに
ここでは、Kubernetes 1.14 の CHANGELOG から SIG-CLI の取り組みについてまとめています。
新たに追加されたコマンド
-
kubectl kustomize
: ディレクトリまたはリモート URL から kustomization ターゲットをビルドする -
kubectl create cronjob
: 指定された名前で cronjob を作成する
廃止予定のコマンド
kubectl convert
削除されたコマンド
なし
そのほか、オプションの追加、削除は、 https://github.com/superbrothers/kubectl-docs/compare/v1.13.0...v1.14.0 で参照できます。
What's New (新情報)
kubectl のプラグイン機構がステーブルになりました (#579)
- kubectl の拡張機能で、任意のサブコマンドを kubectl に追加できます
詳しくは、kubectl のプラグイン機能 kubectl plugin を使おう! に書きました。また、ドキュメントは Extend kubectl with plugins です。
そのほか、kubectl のドキュメントが SIG CLI により用意されました。今回から kubectl に統合された Kustomize の機能について多く記述されています。 Introduction · The Kubectl Book
アップグレード前に確認すべき内容
- kubectl get コマンドの廃止予定だった
--show-all
フラグが削除されました (#69255, @Pingan2017)
廃止予定の機能
-
kubectl convert
コマンドは廃止予定となり、v1.17 で削除される予定です- v1.13 で廃止予定となっていましたが、v1.14 の CHANGELOG でも再度掲載されています
- 廃止理由は、Kubernetes 1.13: SIG CLI の変更内容 を参照してください
- kubectl get コマンドの
--export
フラグは廃止予定となり、v1.18 で削除される予定です (#73787, @soltysh)
注目すべき機能
-
kubectl コマンドにサブコマンドとして Kustomize が追加されました (#73033, @Liujingfang1)
-
Kustomize の統合は、当初は
kubectl apply
コマンドに直接取り込まれる形でマージされましたが、影響範囲が大きすぎることが理由でリバートされこの形になりました -
Kustomize コマンド自体は引き続き kubernetes-sigs/kustomize で開発が続けられます
- kubectl コマンドの kustomize 機能は Kubernetes のリリースサイクルで更新されるため、最新機能を利用したい場合は Kustomize 単独のバイナリを利用する必要があります
-
Kustomize の統合は、当初は
-
kubectl apply/delete/get は、
kustomization.yaml
ファイルを使う-k
フラグをサポートしました (#74140, @Liujingfang1)- 次のように利用します
kubectl apply -k dir # Delete resources from a directory containing kustomization.yaml. kubectl delete -k dir # List resources from a directory containing kustomization.yaml kubectl get -k dir
-
kubectl run
の--quiet
オプションは、--rm
オプションが指定されたときに出力されるリソースの削除メッセージを抑制するようになりました (#73266, @awh) -
kubectl autoscale
コマンドは、カスタムリソースをサポートしました (#72678, @rmohr)- カスタムリソースでこのコマンドを利用するためには、カスタムリソースが scale サブリソースをサポートしている必要があります
-
kubectl logs
コマンドで、-f
コマンドと-l
コマンドが組み合わせて利用することが可能になりました (#67573, @m1kola)- これによって wercker/stern などを利用せずとも、複数 Pod のログを横断的にストリームとして閲覧できるようになりました
-
しかし、
-l
で指定したラベルセレクタに一致した Pod のなかで1つでも正しく動作していないとエラーとなりコマンドが終了してしまうので、個人的には引き続き stern を利用します
-
kubectl auth reconcile
コマンドは、どのような変更が行われるかの詳細を出力するようになりました (#71564, @liggitt) -
kubectl wait
コマンドは、より多くのセレクタタイプで動作するようになりました (#71746, @rctl)- これは、特定のオブジェクトが特定のコンディションになるのを待つコマンドです
- これまでは、特定のオブジェクトしか対象にできませんでしたが、この変更であるリソースのすべてのオブジェクトやラベルセレクタ、フィールドセレクタ、ファイルでの指定が可能になりました
-
kubectl cp
コマンドは、ワイルドカードによるファイルのコピーをサポートしました (#72641, @dixudx)
バグ修正と変更
-
kubectl auth can-i
コマンドに特定のネームスペースでどのアクションが実施できるかがわかる--list
オプションが追加されました (#64820, @WanLinghao)-
これまで OpenShift の CLI である
oc
コマンドには同様の機能がありましたが、それが kubectl にもやってきました
-
これまで OpenShift の CLI である
-
--help
フラグで一部のフラグが正しく表示されていなかったバグが修正されました (#74682, @soltysh) -
kubectl describe
コマンドで static pod のイベントメッセージが取得できてなかったバグが修正されました (#74156, @gaorong) -
kubectl set env
コマンドを--local
フラグとともに実行するとパニックになる問題が修正されました (#65636, @juanvallejo) -
kubectl plugin list
コマンドは、PATH に含まれる存在しないディレクトリに関するエラーメッセージがデフォルトで出力されないように修正されました (#73542, @juanvallejo) -
ユーザは次のようにオブジェクトを取得できるようになりました
a. kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0:3].name b. kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[-2:].name
-
kubectl api-resources
コマンドは、1つのエラーでリソースの表示に失敗することがなくなりました (#73035, @juanvallejo)- これまでは1つの問題があると、そこでリソースの表示処理が終了されてしまっていたところ、すべての処理が完了したのちにエラーをまとめて表示するように変更されました
-
kubectl
コマンドは設定ファイルを一度読み込むと、永続クライアント設定を使うようになりました (#71117, @dixudx)- これまで内部的には kubeconfig ファイルの読み込み処理が複数実行されるとその度に読み込み処理が実行されていました
- この変更によってすでに一度読み込んでいる場合は、キャッシュしたクライアント設定を使い回すようになりパフォーマンスの向上が見込めます
-
kubectl describe pod
コマンドの出力に emptyDir の SizeLimit が表示されるようになりました (#69279, @dtaniwaki)-
Pod
spec.volumes.emptyDir.sizeLimit
が設定されている場合に表示されます
-
Pod
-
kubectl delete
コマンドで--all-namespaces
フラグが利用できるようになりました (#73716, @deads2k)
そのほか
所感
めでたく kubectl plugin が GA となりました。仕様がシンプルなので GA までに大きな変更はありませんでした。ただ、自動補完 (kubectl completion
) がプラグインとして追加したサブコマンドに対応しておらず使いにくい問題があります。これは、1.15 に導入できるように開発する予定です。
Kustomize の統合も大きなニュースです。kubectl kustomize
コマンドと kubectl apply/delete/get -k
として統合されています。個人的には、kubectl にはプラグイン機構があるにもかかわらず、あえて kubectl に統合したことには反対なのですが、うれしい利用者も多いと思います。
地味にうれしいのが、--all-namespaces
に -A
のショートハンドが追加されたことです。補完を使っていればそこまで気にならないことではあるのですが、多用するフラグなのでより短いのはよいことです。
今後ゼットラボメンバから各 SIG 毎に変更内容の記事が投稿されていきます。お楽しみに。