Cloud Native Computing Foundation(CNCF)はKubernetes 1.28をリリースした。このリリースには、混合バージョンのプロキシ、コンテナへのCDIインジェクションのサポート、サイドカーコンテナの認識などの新機能が含まれる。
また、ValidatingAdmissionPolicies、アドミッションWebhooksのマッチ条件、Linuxでのスワップ領域の有効化などのベータ機能もリリースされた。
バージョン1.28では、CephFSインツリープラグインが非推奨となり、GCE PDのCSIマイグレーションが削除された。非正常なノードシャットダウンからの回復、デフォルトStorageClassの自動的かつ遡及的な割り当て、コントロールプレーンとノードのバージョン間のスキューをサポートするための変更など、いくつかの機能が一般提供または安定版となった。
新しいリリースでは、apt.kubernetes.ioとyum.kubernetes.ioのレガシーパッケージリポジトリに代わって、pkgs.k8.ioにDebianとRPM用の新しいパッケージリポジトリが用意されている。これらのリポジトリは2023年9月13日から非推奨となり、機能停止となる。ユーザーは、ウェブサイトに掲載されているプロジェクトのブログ記事を読むことで、影響を受けるかどうかを確認し、必要に応じて対応をしてほしい。
今回のリリースでは、3つの深刻度の高い脆弱性(CVE-2023-3676、CVE-2023-3893、CVE-2023-3955)が解決され、パッチが適用された。これらは、Windows ノード上で権限の昇格につながる可能性のある不十分な入力サニタイズに関連している。
制御プレーンコンポーネントのバージョンが異なる場合でも、kube-apiserverがリクエストに応答できるように、混合バージョンのプロキシサポートが導入された。これは、kube-apiserverが要求されたリソースを提供できるkube-apiserverをチェックし、適切な相手にプロキシすることで実現され、メンテナンス時に役立つ。
新しいリリースでは、ネイティブなサイドカーコンテナも導入された。initコンテナ用のrestartPolicy
フィールドが表示され、有効な値はinitコンテナをサイドカーとしてマークするAlways
のみとなった。以前のバージョンとは異なり、1.28では、Kubeletは、Podのメインコンテナを開始する前に、initコンテナが完了せずに開始されるのを待機するだけだ。
ValidatingAdmissionPolicies
がベータ版に移行し、アドミッションWebhooksを検証するための宣言的かつプロセス内の代替が可能になった。このようなポリシーは、検証ルールを記述するために共通表現言語(CEL)を使用する。これはデフォルトではオフになっている。
さらに、Linuxでスワップメモリ空間を有効にするためのサポートがベータ版になった。この機能により、KubeletはLinux上のKubernetesワークロードがワーカーノードのスワップ領域の使用をサポートできる。これは、ノードレベルのパフォーマンスチューニングを求める管理者や、スワップメモリを使用するアプリケーションを持つ開発者にとって有益だ。
このリリースでは、非正常なノードシャットダウンからのリカバリが一般的に利用可能になった。これにより、オペレーティングシステムのクラッシュやハードウェア障害によってノードが突然シャットダウンしたり、回復不可能な状態に陥ったりした場合に、ステートフルなワークロードを別のノードで再起動できるようになる。
コントロールプレーンとノードコンポーネントのバージョン間のスキューをサポートする変更は、バージョン1.28で安定版としてフラグが立てられた。この変更により、kube-apiserverを含むコントロールプレーンコンポーネントは、Kubeletやkube-proxyを含むノードコンポーネントから3マイナー(n-3)バージョン間のずれが生じる。これによりエンドユーザーは、アップストリームサポートの範囲内で、年に1回ノードのマイナーバージョンアップグレードを行うことができる。
要約すると、Kubernetesバージョン1.28では、19のアルファ版への移行、12の一般提供または安定版への移行、14のベータ版への移行を含む、45の機能強化が行われている。また、リリースノートによると、3つの機能が非推奨または削除されている。 CNCFは2023年9月6日にウェビナーを開催し、リリースチームからの変更点について説明した。