はじめに
このエントリは、Kubernetes 1.25 の 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 (Major Themes)
PodSecurityPolicy is Removed, Pod Security Admission graduates to Stable
PodSecurityPolicyはv1.21で非推奨とされ、v1.25で削除されました。その更新は使い勝手を良くするために必要な更新は破壊的変更をもたらし、それはより使いやすい代替機能でそれを置き換えるために必要です。その置き換えはPod Security Admissionで、このリリースでStableへ昇格しました。もしPodSecurityPolicyへ依存している場合は、PodSecurity Admissionへ移行するための導入をご参照ください。
- ついにPSPが削除されました。後継のPodSecurity AdmissionはPodSecurityPolicyの廃止に備えて、一足先にPodSecurity Admissionを試してみよう! - Qiitaでも紹介しているので合わせてご参照ください。
Ephemeral Containers Graduate to Stable
Ephemeral Containerは既存のPodの中で限られた時間の間存在するコンテナです。これは特に他のコンテナを調査したいが、そのコンテナがクラッシュしていたり、イメージにデバッグユーティリティがないことで、kubectl exec
を使用できない場合のトラブルシューティングに便利です。エフェメラルコンテナはKubernetes v1.23でBetaに昇格し、今回のリリースでStableに昇格しました。
Support for cgroups v2 Graduates to Stable
Linuxカーネルのcgroup v2 APIが安定したと宣言されてから、2年以上が経過しました。このAPIはいくつかのディストリビューションで現在デフォルトであり、Kubernetesはそれらのディストリビューションで動作し続けるために、このAPIをサポートする必要があります。cgroups v2はcgroup v1に対していくつかの改善を提供しています。詳細についてはcgroups v2のドキュメントをご参照ください。cgroup v1はサポートされ続けますが、このエンハンスメントはKubrnetesはやがてくる非推奨とv2への置き換えに備えることができます。
Windows support improved
- Performance dashboardsがWindowsのために追加されました。
- Unit testsはWindowsのためのサポートが追加されました。
- Conformance testsはWindowsのためのサポートが追加されました。
- Windows Operational Readinessのための新しいリポジトリが追加されました。
Moved container registry service from k8s.gcr.io to registry.k8s.io
k8s.gcr.ioからregistry.k8s.ioへのコンテナレジストリの移行がマージされました。詳細はwiki pageとkubernetes development mailing listへ送信されたアナウンスをご参照ください。
Promoted SeccompDefault to Beta
SeccompDefaultはbetaへ昇格しました。詳細はRestrict a Container's Syscalls with seccompをご参照ください。
- SeccompDefaultに関してはKubernetesのSeccompDefaultを試した - Qiitaでも調査記事を公開しているのでこちらもご参照いただければ幸いです。
Promoted endPort in Network Policy to Stable
Network PolicyのendPort
はGAへ昇格しました。endPort
フィールドをサポートしているNetwork PolicyプロバイダーはNetwork Policyを適用するためにポートの範囲を指定するためにそれを利用できます。以前は、それぞれのNetwork Policyは単一のPortのみをターゲットすることができました。
endPort
フィールドはNetwork Policy providerによって必ずサポートされなければならないフィールドであることにご注意ください。もしあなたのプロバイダーがendPort
をサポーしておらずこのフィールドはNetwork Policyで指定している場合、Network Policyはportフィールドのみをカバーするように作られます(単一のポート)。
Promoted Local Ephemeral Storage Capacity Isolation to Stable
Local Ephemeral Storage Capacity Isolation機能がGAへとなりました。これは、1.8でalphaとして導入され、1.10でbetaとなり、そして現在stable機能となりました。それはEmptyDir
のようなPod間のローカルエフェメラルストレージの分離をサポートを提供し、ローカルエフェメラルストレージの消費量がその上限を超えるとPodを退避させることでPodが共有リソースの消費を厳しく制限できるようにします。
- この記事のGAに関するブログはこちら
Promoted core CSI Migration to Stable
CSI MigrationはSIG Storageがいくつかのリリースで実施してきている進行中の取り組みです。core CSI Migration機能はGAとなりました。GCE PDとAWS EBSのためのCSI MigrationはGAとなりました。vSphereのためのCSI Migrationはbetaのままです(しかしデフォルトでオンです)。PortworxのためのCSI MigrationはBetaへ移行しました(しかしデフォルトでオフです)。
Promoted CSI Ephemeral Volume to Stable
CSI Ephemeral Volume機能はCSI volumeがPodのスペックで一次的な利用のために直接指定されることを許容する機能です。これらはPodへマウントされるボリュームへ直接、設定、シークレット、アイデンティティー、変数または同様の情報など、任意の状態をポッド内部に注入するために使用することができます。これは当初1.15でアルファ版機能として導入され、GAに移行しました。この機能はsecret-store CSIドライバのようないくつかのCSIドライバで使用されています。
Promoted CRD Validation Expression Language to Beta
CRD Validation Expression Languageはbetaへ移行しました。それはどのようにカスタムリソースが検証されるかをCommon Expression Language (CEL)で定義するための機能です。詳細はvalidation rulesガイドを見てください。
Promoted Server Side Unknown Field Validation to Beta
ServerSideFieldValidation
feature gateはbetaへ昇格しました(デフォルトでオン)。これにより、未知のフィールド検知されたとき、エラーとなるAPIサーバー上のスキーマ検証をオプションでトリガーすることができます。これは未知のフィールドや無効なフィールドを含むリクエストをエラーにするという同様のコア機能を維持しながら、kubectlからクライアントサイドの検証を取り除くことができます。
Introduced KMS v2
パフォーマンスやローテーション、可観測性の改善を追加するためにKMS v2alpha1APIが導入されました。kmsのデータの暗号化のためにAES-CBCの代わりにAES-GCMを利用したDEKを用いてKubernetesのSecretなどのデータを暗号化します。AES-GCMとAES-CBCによる読み込み引き続き可能です。詳細はUsing a KMS provider for data encryptionをご参照ください。
Kube-proxy images are now based on distroless images
以前のリリースでkube-proxyのコンテナイメージはベースイメージとしてDebianを利用してビルドされていました。このリリースから、イメージはdistrolessを利用してビルドされるようになりました。この変更はイメージサイズを約50%減らし、インストールされるパッケージとファイルの数は、kube-proxyが仕事をするために厳密に必要なものだけになりました。
Known Issues
LocalStorageCapacityIsolationFSQuotaMonitoring ConfigMap rendering failure
ConfigMapのレンダリングの問題がv1.25.0のリリースで見つかりました。ConfigMapがAPIでアップデートされたとき、kubeletによってPodのファイルシステムへ結果がレンダーされません。この機能は1.25.1のリリースでalphaへrevertされます。
Urgent Upgrade Notes
(No, really, you MUST read this before you upgrade)
- 1.25で削除予定だった非推奨のbeta APIがサーブされなくなりました。詳細は https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-25 をご参照ください。
- CronJobのbatch/v1beta1やautoscaling/v2beta1やpolicy/v1beta1などが利用できなくなるため注意が必要です。
- kmsのデータ暗号化のためにAES-CBCの代わりにAES-GCMを用いてDEKでデータが暗号化されます。ユーザのアクションは必要ありません。AES-GCMとAES-CBCを用いての読み込みは非木津付き利用可能です。
- End-to-endのテストはGinkgo v1からv2へ移行されました。
test/e2eをGinkgo CLIで動作させるとき、v2 CLIはかならず利用される必要があり、また -timeout=24h
(もしくはその他の適切な値)が渡されなければなりません。なぜならデフォルトのタイムアウトが24時間から1時間へ減らされたためです。 go test
経由で実行する時、対応する-args
パラメータは-ginkgo.timeout=24h
となります。KubernetesのリポジトリでCLIをビルドするためにはmake all WHAT=github.com/onsi/ginkgo/v2/ginkgo
を利用してください。Ginkgo V2はgo testの-parallel
フラグをGinkgo specの並列化のために受け付けませんので、代わりにginkgo -p
やginkgo -procs=N
へ切り替えてください。(#109111, @chendave) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scheduling, Storage, Testing and Windows]
- アクションは不要です; API/CLIの変更はありません;新しいWindows Imageのサポートが追加されました (#110333, @liurupeng) [SIG Cloud Provider and Windows]
- intreeのflockerのvolume pluginのサポートはKubernetesから完全に削除されました。(#111618, @Jiawei0227)
- intreeのquobyteのvolume pluginのサポートはKubernetesから完全に削除されました。(#111619, @Jiawei0227)
- intreeのstorageosのvolume pluginのサポートはKubernetesから完全に削除されました。(#111620, @Jiawei0227)
- Kubernetesのイメージをpullするために利用可能な新しいOCIイメージレジストリ(
registry.k8s.io
)があります。古いレジストリ(k8s.gcr.io
)は引き続きしばらくの間サポートされますが、他のクラウドにある同等のミラーのフロントエンドであるため、新しい名前はより良いパフォーマンスを発揮するはずです。あなたのクラスタを新しいレジストリへ向くようにしてください。レジストリの許可リストをもつAdmission/Policyを統合している場合は、k8s.gcr.io
と一緒にregistyr.k8s.io
を含む必要があります。air-gap環境でイメージのgarbage-collectionの設定はregistry.k8s.io
とk8s.gcr.io
で必要なイメージをpre-pull して保存するように更新する必要があります。(#109938, @dims)