LoginSignup
13
7

More than 1 year has passed since last update.

Kubernetes 1.24: 変更点まとめ(What's new!)とアップグレード時の注意事項

Last updated at Posted at 2022-05-19

はじめに

このエントリは、Kubernetes 1.24 の CHANGELOG からWhat's new!とアップグレード時の注意事項、各変更点についてまとめたページへのリンクです。
詳細については各まとめページを参照してください。

変更点の詳細へのリンク

What's new!

Dockershim Removed from kubelet

v1.20で非推奨となっていたdockeshimコンポーネントはkubeletから削除されました。
v1.24移行、サポートされているランタイム(例えばcontainerdやCRI-Oなど)の一つを利用するか、コンテナランタイムとしてDocker Engineへ依存している場合はcri-dockerdを利用する必要があります。
より詳細な情報については、こちらのガイドをご参照ください。

Beta APIs Off by Default

新しいベータAPIはデフォルトでクラスタでは有効化されなくなります
既存のベータAPIと既存のベータAPIの新しいバージョンはデフォルトで有効のままとなります。

  • :pencil: あくまでAPIの話であり、Feature Gatesのベータとは別の話のようです

Signing Release Artifacts

リリースの成果物はcosignを用いて署名され、イメージの署名検証が実験的にサポートされています。
リリース成果物の署名と検証は、Kubernetesのリリースプロセスにおけるソフトウェアサプライチェーンセキュリティを向上させるための一部です。

OpenAPI v3

Kubernetes 1.24はOpenAPI v3 formatを用いてAPIを公開する機能をベータ版としてサポートするようになりました。

Storage Capacity and Volume Expansion Are Generally Available

Storage capacity trackingは、CSIStorageCapacity オブジェクトを介した現在利用可能なストレージ容量の公開をサポートし、遅れてバインドするCSIボリュームを使用するPodのスケジューリングを強化します。

NonPreemptingPriority to Stable

この機能はPod preemptionを有効・無効化できるPriorityClassesへの新しいオプションを追加します。

Storage Plugin Migration

オリジナルのAPIはメンテナンスしながら、CSI Plugins を呼び出すためにin-tree storage pluginsを移行する 作業が進行中です。
Azure DiskとOpenStack Cinderのプラグインは両方とも移行されています。

gRPC Probes Graduate to Beta

Kubernetes v1.24を用いると、gRPC probe機能がbetaとして導入され、デフォルトで有効可能です。
HTTPエンドポイントを公開したり、追加の実行ファイルの利用なしにKubernetes内でネイティブにgRPCアプリケーションのstartup/liveness/readiness probeを設定可能となりました。

Kubelet Credential Provider Graduates to Beta

初めにKubernetes 1.20でアルファとしてリリースされたkubeletのimage credential providersのサポートはbetaへ昇格しました。
これはkubeletがexecプラグインを利用して、ノードのファイルシステムへクレデンシャルを保存せずに、コンテナイメージのためのクレデンシャルを動的に取得可能とします。

Contextual Logging in Alpha

Kubernetes 1.24はcontextual loggingを導入しました。
これは関数の呼び出し元がロギングの全ての側面(出力フォーマット、冗長性、追加の値や名前) を制御できるようにするものです。

  • :pencil: klogにこの機能は入っているようですが、Kubernetes v1.24.0のソースコードを確認した限りだとまだ利用されてなさそう?

Avoiding Collisions in IP allocation to Services

Kubernetes 1.24では、Serviceに固定IPアドレスを割り当てるための範囲をソフトリザーブできる新しいオプトイン機能が導入されました。
この機能を有効にすると、クラスターはServiceのIPアドレスのプールから自動割り当てを優先するため、衝突のリスクが軽減されます。

ServiceのClusterIPは以下のようにアサインされます:

  • 動的に割り当てる: 設定されたService IPレンジ内の空いているIPをクラスタが自動的に選択します
  • 静的に割り当てる: 設定されたService IPレンジ内の一つのIPをユーザがセットします

サービスClusterIPはユニークであるため、すでに割り当てられているClusterIPを使用してサービスを作成しようとするとエラーが返されます。

  • :pencil: この機能によりCoreDNSなど特定のClusterIPアドレスが必要なServiceが、他のServiceにそのアドレスを取得されづらくできるため便利そうです。

アップグレード時の注意事項

  • kubelet内のdockershimを用いたDocker runtimeはv1.24で完全に削除されました。kubeletは以前はdockershimと呼ばれるdockerのためのCRIを実装しているモジュールを利用しており、それはKubernetes community内でメンテナンスの問題がありました。1.24以降、利用可能になり次第CRIを本格的に実装したコンテナランタイム(v1alpha1またはv1準拠のもの)に移行してください。(#97252, @dims)
  • Secretに保存されたvCenterの認証情報とZones機能が使用されている場合、NodeがNot-readyとなるバグを修正しました。ゾーンラベルのセットアップは KCM コンポーネントに移動し、kubelet はこのような場合、起動時にこのステップをスキップします。クラウドプロバイダー設定ファイルにプレーンテキストで保存された資格情報の場合、現在の動作は変更されず、アクションは必要ありません。適切な機能を実現するためには、Secret および Zone 機能で保存された vCenter 認証情報を使用している場合、kube-system:vsphere-legacy-cloud-provider がノードオブジェクトを更新できるようにする必要があります。(#101028, @lobziik)。
  • LegacyServiceAccountTokenNoAutoGeneration feature gateがベータとなり、デフォルトで有効化されます。有効化されるとService account tokenを含むSecret APIオブジェクトは自動生成されません。service account tokenを取得するためのTokenRequest APIを利用するか、もし期限切れを起こさないトークンが必要な場合は、このガイドにしたがってService account tokenを追加するためのtoken controllerのためのSecret APIオブジェクトを作成してください。(#108309, @zshihang)
  • Pod topology spreadのskewのための計算はnode affinity/selectorにマッチしないノードを除外するようになりました。これにより以前は除外されるノードでspreading selectorにマッチしていたpodが、特にtopologyKeyがノードレベルでないときに、スケジュールできないPodとなる可能性があります。このシナリオを避けるために、topology spread constraints利用時のnode affinityやpod selectorを再検討してください。(#107009, @kerthcet)
  • 非推奨となっていた--experimental-check-node-capabilities-before-mountフラグが削除されました。CSIのGAに伴い、よりよい代替手段があります。kubeletのscriptやマニフェストから--experimental-check-node-capabilities-before-mountの利用している部分を削除してください。(#104732, @mengjiao-liu)
  • kubeadm.k8s.io/v1beta2は非推奨となり将来のリリースおそらく3リリース(1年)で削除予定です。新しいクラスタのためにはkubeadm.k8s.io/v1beta3を利用し始めるべきです。古い設定ファイルからマイグレートするためにはkubeadm config migrateコマンドが利用できます。
  • Kubeadm: dockerの設定ではなくcontainerd socket(Unix: unix:///var/run/containerd/containerd.sock, Windows: npipe:////./pipe/containerd-containerd)をデフォルトとして利用するようになりました。クラスタ作成時に Init|JoinConfiguration.nodeRegistration.criSocket フィールドが空で、ホスト上に複数のソケットが見つかった場合は常にエラーをスローして、フィールドに値を設定することで使用するソケットを指定するようにユーザーに要求します。kubeadm設定ファイルを更新し、dockershimソケットを含めないようにしてください(kubeletバージョン<1.24かつkubeadm >= 1.24を使用している場合を除く)。kubeadm のpreflightから docker サービス用の DockerValidor と ServiceCheck を削除しました。ホスト検証時にDockerはもはや特別なケースではなく、理想的にはこのタスクは互換性の問題が重要となるcri-dockerdプロジェクトで処理されるべきタスクです。Docker の場合、docker CLI を使用する代わりに、イメージの取得や実行中のコンテナのリストの取得などの CRI ソケットとのすべての通信に crictl を使用するようにしました。(#107317, @neolit123)
  • 他のマイグレーションプラグインと同等にするためにCSIMigrationRBDとなるべき場所でcsiMigrationRBDとしてfeature gatesで指定されていました。このリリースではこれを修正し、csiMigrationRBDとして設定しているユーザーは、このリリースからCSIMigrationRBDに再設定する必要があります。(#107554, @humblec)
  • 実験的な動的なログのサニタイズ機能はv1.24で非推奨となり削除されます。この機能は利用できなくなりました。(#107207, @ehashman)
    • :pencil: 新しいログの機能をブロック要素となること、機能のサポート負荷などが原因でalpha機能だったため削除されるようです
  • Kubeadm: kubeadmがラベルやtaintsでmasterという単語を使わないように移行する計画のsecond stageを適用しました。新しいクラスタでは、コントロールプレーンノードに node-role.kubernetes.io/master というラベルは追加されなくなり、node-role.kubernetes.io/control-plane というラベルだけが追加されます。kubeadm upgrade apply で 1.24 にアップグレードするクラスタでは、このコマンドは既存のコントロールプレーンノードから node-role.kubernetes.io/master というラベルを削除します。新しいクラスタでは、古い taint node-role.kubernetes.io/master:NoSchedule と新しい taint node-role.kubernetes.io/control-plane:NoSchedule の両方が制御プレーンノードに追加されます。リリース1.20 (first stage) では、リリースノートで新しいtaintを先取りして許容するように指示されています。kubeadm upgrade applyで1.24にアップグレードするクラスタでは、コマンドは既存のコントロールプレーンノードに新しいtaint node-role.kubernetes.io/control-plane:NoSchedule を追加することになるでしょう。これらの変更にあなたのインフラを適応させてください。1.25 では、古いtaint node-role.kubernetes.io/master:NoSchedule は削除される予定です。(#107533, @neolit123)
13
7
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
13
7