6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-08-28

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

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

  • kubectl alpha event の次のフラグ:
    • --output: json|yaml サポートが追加され、将来カスタムカラム等の機能が追加される予定
    • --types: Normal または Warning が指定でき、特定のイベントタイプのみをフィルタして出力する。デフォルトは Normal,Warning で、すべてのタイプが含まれる。
    • --no-headers: デフォルトの出力形式でヘッダを出力しなくなる
  • kubectl diff --show-managed-fields フラグ: 出力に managed-fields の差分を含むようになる。デフォルトでは含まれないように変更された。
  • kubectl top pod --sum フラグ: Pods が使用するリソースの合計値が出力される

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

  • kubectl kustomize コマンド: kustomize v4.5.7 にアップグレード

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

なし

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

  • kubectl run の次のフラグ:
    • --cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout, --wait

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

所感

1.25 でも kubectl に主だった変更はなく、細かい修正や機能追加があります。

特に便利なのは kubectl diff コマンドで managed-fields が含まれなくなった変更です。managed-fields は Server-Side Apply において、どの manager がどのフィールドを管理しているかの情報をシステムが管理するためのフィールドで、一般にユーザがこのフィールドが変更されることについて知る必要はないため、kubectl get -o yaml コマンドで managed-fields がデフォルトで出力されなくなったのに次いで kubectl diff コマンドでも出力されなくなりました。

Server-Side Apply の詳細について興味ある方は、Kubernetes 1.14: Server-side Apply (alpha) - Qiita を、managed-fields に興味がある方は わかる!metadata.managedFields - Speaker Deck を参照ください。

What's New (Major Themes)(主要な変更)

SIG-CLI に関連する情報はありません。

Urgent Upgrade Notes(必ず一読してからアップグレードしなければならない事項)

SIG-CLI に関連する情報はありません。

Changes by Kind(種類別の変更)

Deprecation(廃止)

SIG-CLI に関連する情報はありません。

API Change(API の変更)

SIG-CLI に関連する情報はありません。

Feature(機能)

  • kubectl describe pod コマンドの出力に Service Account フィールドが追加されました (#111192, aufarg)
    • :pencil: 最近そういえば ServiceAccount の情報が出力されてないなーと思っていたところでした。べんり。
  • alpha events に --output, --types, --no-headers の新しいフラグが追加されました (#110007, ardaguclu)
    • :pencil: --output: json|yaml サポートが追加され、将来カスタムカラム等の機能が追加される予定
    • :pencil: --types: Normal または Warning が指定でき、特定のイベントタイプのみをフィルタして出力する。デフォルトは Normal,Warning で、すべてのタイプが含まれる。
    • :pencil: --no-headers: デフォルトの出力形式でヘッダを出力しなくなる
  • kubectl top pod に sum 機能が追加されました (#105100, lauchokyip)
    • :pencil: 次のように Pods が使用するリソースの合計値が出力されるようになる
      $ kubectl top po --sum
      NAME                     CPU(cores)   MEMORY(bytes)
      nginx-75889c7749-m98c8   0m           3Mi
      nginx-75889c7749-rqtgd   22m          3Mi
                               ________     ________
                               22m          7Mi
      
    • :pencil: kubectl top コマンドを使用するには、対象のクラスタで metrics-server が実行されている必要があります。 https://github.com/kubernetes-sigs/metrics-server
  • Kubectl: kubectl rollout status で複数リソースがサポートされました (#108777, pjo256)
    • :pencil: kubectl rollout status deploy/nginx deploy/nginx2 のように複数のオブジェクトを一度に渡せるようになったようです。
  • 新しい KUBECACHEDIR 環境変数が導入され、デフォルトの discovery cache のディレクトリである HOME/.kube/cache をオーバライドできるようになりました。 (#109479, ardaguclu)
    • :pencil: discovery cache の指定はこれまでも --cache-dir フラグでできましたが、毎回指定するのが面倒なので環境変数でやりたいということのようです
  • TopologySpreadConstraints が pods, deployments, daemonsets 等に対する describe コマンドで表示されるようになりました (#109563, ardaguclu)
    • :pencil: これまで含まれていなかったので追加されたようで、次のように表示されます
      Topology Spread Constraints:  topology.kubernetes.io/zone1:ScheduleAnyway when max skew 3 is exceeded
                                    topology.kubernetes.io/zone2:DoNotSchedule when max skew 1 is exceeded for selector foo=bar
      
  • kubectl diff はデフォルトで managed fields を無視するように変更されました。そのため、差分に managed fields を含めるための --show-managed-fields フラグが追加されました。 (#111319, brianpursley)
    • :pencil: kubectl diff コマンドの出力で表示されてしまっていた managed-fields の変更が今後デフォルトで出力されなくなりました。さいこう。
    • :pencil: ただ、現状差分があると metadata.generation フィールドの値がインクリメントされてそれが差分として表示されてしまって邪魔なので、これも非表示にしたい気がする (イシューは作っておきました https://github.com/kubernetes/kubectl/issues/1267)
      $ kubectl diff -f nginx.yaml
      diff -u -N /tmp/LIVE-2978127705/apps.v1.Deployment.default.nginx /tmp/MERGED-2861968783/apps.v1.Deployment.default.nginx
      --- /tmp/LIVE-2978127705/apps.v1.Deployment.default.nginx       2022-08-28 10:50:39.099818887 +0900
      +++ /tmp/MERGED-2861968783/apps.v1.Deployment.default.nginx     2022-08-28 10:50:39.099818887 +0900
      @@ -4,7 +4,7 @@
         annotations:
           deployment.kubernetes.io/revision: "1"
         creationTimestamp: "2022-08-28T01:36:11Z"
      -  generation: 2
      +  generation: 3
         labels:
           app: nginx
         name: nginx
      @@ -30,7 +30,7 @@
               app: nginx
           spec:
             containers:
      -      - image: nginx
      +      - image: nginxinc/nginx-unprivileged
               imagePullPolicy: Always
               name: nginx-unprivileged
               resources: {}
      
  • StatefulSetsMaxUnavailable は、一度に1つ以上の Pods を停止させることでより早い RollingUpdate を可能にします。RollingUpdate の間に停止させたい Pods の数は maxUnavailable パラメータで設定できます。 (#109251, krmayankk)
    • :pencil: StatefulSets の maxUnavailable について色々書かれていますが、この機能自体は 1.24 でアルファで追加されており、ここでの変更は maxUnavailable フィールドを kubectl describe statefulsets コマンドの出力に含まれるようにするもの

Documentation(ドキュメント)

  • kubectl 中国語翻訳の最適化 (#110538, hwdef) [SIG CLI]

Bug or Regression(バグまたはリグレッション)

  • replace コマンドで dry-run と force のフラグが設定されている場合は、"--force が設定されている場合、dry-run は使用できません" というエラーメッセージが出力されるようになりました (#110326, ardaguclu)
  • 同じ値のラベルを設定してもエラーにせず無視するようになりました (#105936, zigarn)
    • :pencil: kubectl label コマンドは、これまで追加しようとしているラベルのキーがオブジェクトのラベルに存在している場合にエラーになっていました(--overwrite フラグで上書き可能)が、値が同一の場合はエラーにせずコマンドが成功するように変更されました
  • kubectl run コマンドの使用されていないフラグが削除されました (#110668, brianpursley)
    • :pencil: 具体的には次のフラグが削除されました
      • --cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout, --wait
  • kubectl kustomize の機能が https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv4.5.7 に記述されているとおりにアップグレードされました (#111606, natasha41575)
  • pod.Spec.RuntimeClassName フィールドが kubectl describe コマンドで利用可能になりました (#110914, yeahdongcn)

Other (Cleanup or Flake)(そのほか)

  • kubectl completion コマンドの short description に不足している powershell オプションが追加されました (#109773, danielhelfand)
  • discovery client のバースト制限のデフォルトが 300 に設定されました (#109141, ulucinar)
  • kubectl runkubectl debug でアタッチに失敗した場合のエラーメッセージが改善されました (#110764, soltysh)
    • :pencil: 以前は Error attaching ... と表示されていたが、アタッチに失敗したことは致命的ではないため warning: couldn't attach to pod/... のように変更された
  • 廃止予定だった kubectl.kubernetes.io/default-logs-container のサポートが削除されました (#109254, pacoxu)
    • :pencil: 代わりに kubectl.kubernetes.io/default-container annotation を使用する必要があります
  • シェル補完が --subresource フラグに提供されるようになりました (#109070, marckhouzam)
    • :pencil: --subresource フラグは、リソースのサブリソースを操作するためのフラグで v1.24 で実装された。現在は statusscale の2つがサポートされている。
6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?