はじめに
このエントリは、Kubernetes 1.26 の CHANGELOG 及びKubernetes v1.26: Electrifyingから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)
Change in container image registry
前のリリースでは、Kubernetesはコンテナレジストリを変更し、複数のクラウドプロバイダやリージョンに負荷分散できるようになり、この変更により単一のエンティティへの依存を減らし、多くのユーザにとってより高速なダウンロード体験が提供されるようになりました。
このKubernetesのリリースは新しい registry.k8s.io コンテナイメージレジストリでのみ配布される最初のリリースです。(今となってはlegacyの) k8s.gcr.io イメージレジストリでは、v1.26のためのタグを持つコンテナイメージは配布されず、v1.26より前のタグのみアップデートされ続けます。この重要な変更の動機、利点、および意味についてはregistry.k8s.io: faster, cheaper and Generally Availableをご参照ください。
CRI v1alpha2 removed
Container Runtime Interface(CRI)とv1.24のdockershimの削除により、CRIは異なるコンテナランタイムと対話するための唯一のサポートされ文書化された方法となっています。各kubeletはそのノード上のcontainer runtimeとどのCRIバージョンを利用するかネゴシエートします。
以前のリリースでは、KubernetesプロジェクトはCRI versionであるv1を利用する様に推奨していましたが、kubeletはv1alpha2の利用のネゴシエートを続けており、それは非推奨とされていました。
Kubernetes v1.26ではCRI v1alpha2のためのサポートしなくなりました。その削除によりkubeletがcontainer runtimeがCRI v1をサポートしない場合、ノードを登録しなくなります。これはcontainerdのマイナーバージョン1.5以前はKubetrnetes v1.26ではサポートしていないということです。もしcontainerdを利用する場合、ノードをKubernetes v1.26へアップグレードする前にcontainerdのバージョンを1.6.0以降へアップグレードする必要があります。これはv1alpha2のみをサポートする他のコンテナランタイムも同様に適用されます。もし影響がある場合、コンテナランタイムのベンダーに連絡してアドバイスをもらうか、そのウェブサイトで今後の進め方について追加で確認する必要があります。
Storage improvements
以前のリリースでコアのContainer Storage Interface (CSI) Migration機能のGAに続き、CSI migrationは数リリース前から取り組んでいる継続的な取り組みで、今回のリリースでもマイグレーションの目標に沿った機能の追加(および削除)、およびKubernetesストレージのその他の改良が行われています。
CSI migration for Azure File and vSphere graduated to stable
vSphereとAzureのin-tree driverのCSI migrationはStableへ昇格しました。より詳細な情報が知りたい場合はvSphere CSI driverとAzure File CSI driverリポジトリをご参照ください。
Delegate FSGroup to CSI Driver graduated to stable
この機能により、Kubernetesはボリュームのマウント時にPodのfsGroupをCSIドライバーに供給し、ドライバーはマウントオプションを利用してボリュームのパーミッションを制御できるようになります。以前は、Kubeletは常にPodの.spec.securityContext.fsGroupChangePolicy
フィールドで指定されたポリシーに従ってボリューム内のファイルへのfsGroupownershipとパーミッション変更を適用していました。このリリースから、CSIドライバには、ボリュームのアタッチ時またはマウント時にfsGroup設定を適用するオプションが追加されました。
In-tree GlusterFS driver removal
v1.25のリリースで既に非推奨となっていたin-treeのGlusterFSドライバーはこのリリースで削除されました。
In-tree OpenStack Cinder driver removal
このリリースで非推奨となっていたOpenStack(cinder volume type)のためのin-treeのストレージ統合は削除されました。代わりに https://github.com/kubernetes/cloud-provider-openstack のexternal cloud provider及びCSI dirverへ移行すべきです。より詳細な情報はCinder in-tree to CSI driver migrationをご参照ください。
Signing Kubernetes release artifacts graduates to beta
Kubernetes v1.24で導入されたこの機能は、Kubernetesリリースのセキュリティを向上させる重要なマイルストーンを構成しています。すべてのリリースアーティファクトはcosignを使用してキーレスで署名され、バイナリアーティファクトとイメージの両方が検証可能です。
Support for Windows privileged containers graduates to stable
Privileged containerのサポートは直接ホスト上で動作するプロセスと同様にホストへアクセス権をもつコンテナを実行できます。Windowsノードでこの機能をサポートは、HostProcess containersと呼ばれ、今回Stableとなり、privileged containerからネットワークリソースなどを含むホストのリソースへアクエスできる様になりました。
Improvements to Kubernetes metrics
このリリースはいくつかの注目すべきメトリクスの改善が含まれます。
Metrics framework extension graduates to alpha
metrics framework extensionはalphaとなり、Kubernetesコードベースの全てのメトリクスについてドキュメントが公開されました。今回のエンハンスメントでは二つのメタデータフィールドをKubernetesのメトリクスへ追加しました: InternalとBetaの2つのメタデータフィールドが追加され、メトリクスの成熟度の異なる段階を表しています。
Component Health Service Level Indicators graduates to alpha
Kubernetesのメトリクスを消費する機能を改善し、コンポーネントヘルスのService Level Indicator(SLI)がAlphaになりました。ComponentSLIs feature フラグを有効にすると、メトリクス形式に変換された生のヘルスチェック・データからサービスレベル目標(SLO)を計算できる追加のメトリックエンドポイントが追加されます。
Feature metrics are now available
FeatureメトリクスがそれぞれのKubernetesコンポーネントで利用可能となり、コンポーネントのメトリクスエンドポイントのkubernetes_feature_enabled
をチェックすることによりそれぞれのアクティブなfeature gateが有効化されているかどうかを追うことが可能となります。
Dynamic Resource Allocation graduates to alpha
Dynamic Resource Allocationは新たな機能でresource schedulingをthird-partyの開発者へ委ねるものです: それはリソースを要求する(例えばnvidia.com/gpu: 2)ために制限された"カウント可能な"インターフェースを代替を提供し、より永続ボリュームに類似した API を提供します。内部的にはそれはdeviceをインジェクションするためにContainer Device Interface(CDI)を利用します。この機能はDynamicResourceAllocation
feature gateによりブロックされています。
CEL in Admission Control graduates to alpha
この機能はvalidation admission policiesのためのv1alpha1 APIを導入し、Common Expression Languageを用いて拡張可能なadmission controlを有効化します。現在、カスタムポリシーはadmission webhookにより強制されており、それは柔軟な一方in-processなポリシーの執行と比較するといくつか欠点があります。利用するためにはValidatingAdmissionPolicy feature gateを有効化し、かつadmissionregistration.k8s.io/v1alpha1
を--runtime-config
経由で有効化する必要があります。
簡単ではありますがこちらの機能を調査しましたので、ご興味がある方はこちらもご参照ください!
Pod scheduling improvements
Kubernetes v1.26では、スケジューリング動作をより適切に制御する機能に関連するいくつかの機能強化が導入されています。
PodSchedulingReadiness graduates to alpha
この機能は.spec.schedulingGates
フィールドをPodのAPIへ追加し、Podがスケジュールされることを許可されているかどうかを示します。外部のユーザやコントローラはこのフィールドを使用してポリシーや必要に基づきスケジューリングからPodをホールドできます。
NodeInclusionPolicyInPodTopologySpread graduates to beta
topologySpreadConstraintsのnodeInclusionPolicyを指定することで、Pod Topology Spreadのスキューを計算する際に、taintas/tolerationsを考慮するかどうかをコントロールできます。
Other Updates
Graduations to stable
このリリースは合計11のenhancementsがStableへの昇格を含みます。
- Support for Windows privileged containers
- vSphere in-tree to CSI driver migration
- Allow Kubernetes to supply pod's fsgroup to CSI driver on mount
- Azure file in-tree to CSI driver migration
- Job tracking without lingering Pods
- Service Internal Traffic Policy
- Kubelet Credential Provider
- Support of mixed protocols in Services with type=LoadBalancer
- Reserve Service IP Ranges For Dynamic and Static IP Allocation
- CPUManager
- DeviceManager
Deprecations and removals
このリリースでKubernetesから12の機能が非推奨または削除されました。
- CRI v1alpha2 API is removed
- Removal of the v1beta1 flow control API group
- Removal of the v2beta2 HorizontalPodAutoscaler API
- GlusterFS plugin removed from available in-tree drivers
- Removal of legacy command line arguments relating to logging
- Removal of kube-proxy userspace modes
- Removal of in-tree credential management code
- The in-tree OpenStack cloud provider is removed
- Removal of dynamic kubelet configuration
- Deprecation of non-inclusive kubectl flag
- Deprecations for kube-apiserver command line arguments
- Deprecations for kubectl run command line arguments
Urgent Upgrade Notes
(No, really, you MUST read this before you upgrade)
-
v1.26
で削除予定であった非推奨のbeta APIはサーブされなくなりました。詳細は https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-26 をご参照ください。(#111973, @liggitt)
- OpenStackのためのin-treeのcloud provider(とcinder volume provider)は削除されました。代わりにcloud-provider-openstackからexternal cloud providerとcsi driverを利用してください。(#67782, @dims)