はじめに
このエントリは、Kubernetes 1.23 の CHANGELOG からWhat's new!とアップグレード時の注意事項、各変更点についてまとめたページへのリンクです。
詳細については各まとめページを参照してください。
変更点の詳細へのリンク
- Metrics Changes と SIG Instrumentation @watawuwu
- SIG Apps @yosshi_
- SIG API Machinery @Ladicle
- SIG Auth @hiyosi
- SIG CLI @superbrothers
- SIG Cluster Lifecycle @yuanying
- SIG Storage @ysakashita
- SIG Network @tkusumi
- SIG Scheduling @everpeace
- SIG Node @y1r96
What's new!
Deprecation of FlexVolume
FlexVolumeが非推奨となりました。Out-of-treeのCSI DriverがKubernetesでVolume Driverを書くための推奨の方法です。詳細はこちらのドキュメントをご参照ください。FlexVolumeドライバのメンテナはCSI Driverを実装し、FlexVolumeのユーザはCSIへ移行すべきです。FlexVolumeを利用しているユーザはそれらのワークロードをCSI Driverへ移行してください。
Deprecation of klog specific flags
コードベースをシンプルにするために、いくつかのロギングフラグがKubernetes v1.23で非推奨とマークされました。それらを実装しているコードは将来のリリースで削除されるため、利用しているユーザは代替の解決方法で非推奨フラグを置き換え始める必要があります。
- 非推奨となるフラグはこちらで確認できます
- 詳細はKubernetes 1.23: Metrics Changes と SIG Instrumentation の変更内容をご参照ください
Software Supply Chain SLSA Level 1 Compliance in the Kubernetes Release Process
Kubernetesのリリースでは、リリースプロセスのステージングとリリースのフェーズを記述した証明ファイルが生成され、あるフェーズから次のフェーズに引き渡される際にアーティファクトが検証されるようになりました。この最後のピースにより、SLSA(Supply-chain Levels for Software Artifacts)セキュリティフレームワークのレベル1に準拠するために必要な作業が完了します。
- SLSAについてはこちらのブログポストや公式サイトやこちらのリポジトリに情報がまとまっていそうです
IPv4/IPv6 Dual-stack Networking graduates to GA
IPv4/IPv6 デュアルスタックネットワーキング が GA (General Availability) となりました。1.21 から、Kubernetes クラスタはデュアルスタックネットワーキングのサポートがデフォルトで有効です。1.23 で、IPv6DualStack フィーチャーゲートは削除されました。デュアルスタックネットワーキングの使用は、必須ではありません。クラスタではデュアルスタックネットワークのサポートが有効になっていますが、Pod と Service のデフォルトは引き続きシングルスタックとなっています。
デュアルスタックネットワーキングを使用するには、ノードがルーティング可能なIPv4/IPv6ネットワークを持ち、デュアルスタックが利用可能なCNIネットワークプラグインを利用する必要があり、Podがdual-stackとなるように設定され、Serviceはそれらの.spec.ipFamilyPolicy
フィールドでPreferDualStack
もしくはRequireDualStack
のどちらかが設定されている必要があります。
HorizontalPodAutoscaler v2 graduates to GA
HorizontalPodAutoscaler APIのVersion 2vが1.23リリースでstableとなりました。HorizontalPodAutoscaler autoscaling/v2beta2 APIは非推奨となり、代わりにautoscaling/v2 APIを利用してください。このリリースはv1のHorizontalPodAutoscaler APIを廃止しません。
Generic Ephemeral Volume feature graduates to GA
generic ephemeral volume機能はv1.23でGAとなりました。この機能はdynamic provisioningをサポートする全てのストレージドライバーをPodにVolumeのライフサイクルが紐づけられたephemeral volumeとして利用できます。全てのボリュームプロビジョニングのためのStorageClassパラメータとPersistentVolumeClaimでサポートされている全ての機能がサポートされています。
Skip Volume Ownership change graduates to GA
Podのためにボリュームのパーミッションとオーナーシップを変更するポリシーを設定するための機能がv1.23でGAとなりました。これにより、マウント時の再帰的なパーミッション変更をスキップすることができ、Podの起動時間を短縮することができます。
Allow CSI drivers to opt-in to volume ownership and permission change graduates to GA
CSIドライバがfsGroupのパーミッションを宣言できる機能が1.23にてGAとなりました。
PodSecurity graduates to Beta
PodSecurityがBetaとなりました。PodSecurityは廃止されるPodSecurityPopily admission controllerを置き換えます。PodSecurityはPod Security Standardをエンフォースレベルがセットするための特定のラベルがセットされたNamespace内のPodへ適用するadmission controllerです。v1.23でPodSecurity feature gateはデフォルトで有効化されます。
- PodSecurityについて知りたい方は、拙作のPodSecurityPolicyの廃止に備えて、一足先にPodSecurity Admissionを試してみよう!も合わせてご参照いただけると嬉しいです
Container Runtime Interface (CRI) v1 is default
KubeletはCRI v1 APIをサポートし、プロジェクト全体でデフォルトとなります。コンテナランタイムが v1 API をサポートしていない場合、Kubernetes は v1alpha2 の実装にフォールバックします。v1 と v1alpha2 は実装に違いがないため、エンドユーザーによる中間的なアクションは必要ありません。v1を進展できるように将来のKubernetesリリースのいずれかでv1alpha2が削除される可能性があります。
Structured logging graduate to Beta
構造化ロギングがbetaとなりました。kubeletやkube-schedulerからの多くのログが変換されました。ユーザーは、JSON出力や構造化テキスト形式の解析を試し、ログ値における複数行の文字列の処理など、未解決の問題に対する可能な解決策についてフィードバックができます。
Simplified Multi-point plugin configuration for scheduler
kube-schedulerは複数の拡張点(extension point)を持つPluginの設定を単純化するために新しい設定フィールドを追加しました。新しいmultiPointpluginフィールドは、管理者がschedulerをシンプルに設定できるようにすることを目的としています。
multiPointで有効化されたpluginは自動的にpluginが実装している拡張点をschedulerに登録します。たとえば、ScoreとFilterという拡張点を実装しているpluginは、双方同時にenabledできるようになります。これによって、拡張点を個別のenables/disabledを手動で編集せずに、全てのpluginをenabled/disbledすることができるようになります。これらの拡張点を個別に設定する方式は、ほとんどのユーザーにとって無関係であるため、抽象化されました。
CSI Migration updates
CSI Migrationは既存のin-treeのStorage Plugin(kubernetes.io/gce-pd or kubernetes.io/aws-ebsなど)を対応するCSIドライバへ置き換えるものです。CSI Migrationが正しく動作していれば、Kubernetesのエンドユーザは、違いに気が付かないはずです。移行後、Kubernetesのユーザは、既存のインターフェースを利用して、in-treeのStorage Pluginの全ての機能を継続し利用できます。
- CSI Migration機能がデフォルトでオンになりますが、1.23ではGCE PD, AWS EBS, Azure DiskはBetaのままです。
- 1.23ではCeph RBD, PortworxのCSI Migration機能はAlphaです。
アップグレード時の注意事項
- kubeadm:
init|join|upgrade
コマンドにおける非推奨の--experimental-patches
を削除しました。--patches
フラグは--config
フラグと共に利用することはできません。ノードにパッチを適用するkubeadmの設定には、{Init|Join}Configuration.patches
を利用してください。(#104065, @pacoxu) - JSONフォーマットのログメッセージはstdoutの代わりにデフォルトでstderrへ出力されるようになりました。stdoutで出力されたJSON出力を期待していたユーザはstdoutに加えてstderrもキャプチャーする必要があります。(#106146, @pohly) [SIG API Machinery, Architecture, Cluster Lifecycle and Instrumentation]
- seccompのためのアノーテーションである
seccomp.security.alpha.kubernetes.io/pod
とcontainer.seccomp.security.alpha.kubernetes.io/[name]
はv1.19以降非推奨となっており、v1.25で削除予定です。seccompProfile APIフィールドを利用するようにしてください。(#104389, @saschagrunert) - kube-log-runnerはtar ballのリリースに追加されました。これは非推奨となった--log-fileパラメータを置き換えるために利用できます。(#106123, @pohly) [SIG API Machinery, Architecture, Cloud Provider, Cluster Lifecycle and Instrumentation]