Container Service for Kubernetes (ACK) は、認定Kubernetes適合プログラムの条項を厳守します。 このトピックでは、Kubernetes 1.26をサポートするためにACKが行った変更について説明します。
目次
バージョン更新
コンポーネントは、Kubernetes 1.26をサポートするためにACKによって更新および最適化されます。
キーコンポーネント | バージョン番号 | 説明 |
Kubernetes | 1.26.15-aliyun.1および1.26.3-aliyun.1 |
|
etcd | v3.5.4 | なし |
CoreDNS | 1.9.3.10-7dfca203-aliyun | なし |
CRI | Containerd 1.6.20 | Kubernetes 1.24.0以降のみがサポートされています。 |
CSI | 1.24.10-7ae4421-aliyun | なし |
CNI | フランネルv0.15.1.22-20a397e6-aliyun | なし |
Terway & TerwayControlplanev1.5.0 + | なし | |
NVIDIAコンテナーランタイム | v3.13.0 | Kubernetes 1.26のみがNVIDIA Container Runtime v3.13.0をサポートしています。 他のKubernetesバージョンはNVIDIA Container Runtime v3.7.0をサポートしています。 |
Ingressコントローラ | v1.6.4-aliyun.1 | なし |
メモの更新
主な変更点
Kubernetes 1.25および1.26では、多数のベータAPIが非推奨になっています。 クラスターをKubernetes 1.26に更新する前に、推奨されないベータAPIとやり取りする必要があるコントローラーまたはアプリケーションが、推奨されるAPIバージョンを使用するように更新されているかどうかを確認します。 非推奨APIの詳細については、「非推奨API」をご参照ください。
Kubernetes 1.26はCRI v1alpha 2をサポートしなくなりましたが、CRI v1をサポートするコンテナランタイムが必要です。 したがって、Kubernetes 1.26はcontainerd 1.5以前をサポートしていません。 Kubernetes 1.26でcontainerd 1.6以降が使用されていることを確認してください。 クラスターをKubernetes 1.26に更新する前に、まずcontainerdを1.6.0以降に更新する必要があります。
PSPアドミッションコントローラーはKubernetes 1.21で廃止され、Kubernetes 1.25から削除されます。 PSPアドミッションコントローラは複雑であり、過度の許可を与える可能性があるため、セキュリティ問題を引き起こす可能性があります。 詳細については、「PodSecurityPolicy: The Historical Context」をご参照ください。
PSPアドミッションコントローラーを使用できるクラスターの場合は、クラスターを更新する前に次のいずれかの制限を設定します。
ACKが提供するポリシー管理機能を使用します。 ACKは、Kubernetesシナリオに最適なポリシーを提供します。 これらのポリシーは、設定と使用が簡単です。 詳細については、「ポリシーガバナンス機能の有効化」をご参照ください。
ユーザーフレンドリーな組み込みのポッドセキュリティ承認を使用してください。 詳細については、「ポッドセキュリティの承認」をご参照ください。 PodSecurityPolicyから組み込みのPodSecurityアドミッションコントローラーに移行する方法の詳細については、「PodSecurityPolicyから組み込みのPodSecurityアドミッションコントローラーへの移行」をご参照ください。
サードパーティの承認プラグインを手動でデプロイおよび設定します。
次のCVE脆弱性は、1.26.15-aliyun.1で修正されています。
CVE-2023-45288
CVE-2024-3177
CVE-2024-24786
新機能
エフェメラルコンテナのベータ版はKubernetes 1.23で使用され、安定版はKubernetes 1.25で使用されます。 確認するポッドがクラッシュした場合、または
kubectl exec
を実行するデバッグツールがない場合は、ポッド内のエフェメラルコンテナを実行してポッドのステータスを確認し、任意のコマンドを実行できます。 詳細については、「エフェメラルコンテナ」をご参照ください。Kubernetes 1.25のcgroup v2は安定フェーズに達します。 cgroup v2は、cgroup v1の最適化バージョンである。 詳細については、「cgroup v2について」をご参照ください。
Kubernetes 1.25でのWindowsのサポートは継続的に最適化されています。 たとえば、CI単体テストと適合テストがサポートされており、新しいリポジトリを作成してWindowsの運用準備を整えることができます。
Kubernetes 1.25では、イメージレジストリk8s.gcr.ioがregistry.k8s.ioにリダイレクトされ、リクエストもregistry.k8s.ioにリダイレクトされます。 詳細については、「k8s.gcr.io registry.k8s.ioへのリダイレクト」をご参照ください。
Kubernetes 1.25では、ネットワークポリシーのEndPortフィールドが一般可用性 (GA) フェーズに達します。 ネットワークプラグインがEndPortフィールドをサポートしている場合、ネットワークポリシーを構成するときにこのフィールドを使用してポートの範囲を指定できます。 ネットワークプラグインがEndPortフィールドをサポートしておらず、このフィールドを使用してネットワークポリシーを作成した場合、ポリシーは単一のポートフィールドにのみ適用されます。 詳細については、「ネットワークポリシー」をご参照ください。
Kubernetes 1.25では、ローカルの一時的なストレージ容量の分離がGA (公式リリース) フェーズになります。 この機能は、EmptyDirボリュームなどのポッド間のローカルエフェメラルストレージの容量分離をサポートします。 ポッドは、ローカルの一時的なストレージの消費が厳しく制限される可能性があります。 ローカル・エフェメラル・ストレージの消費量が上限を超えると、ポッドは追い出されます。 詳細については、「ローカルエフェメラルストレージ容量の分離」をご参照ください。
Kubernetes 1.25では、一時的なCSIボリュームが安定したバージョンに更新されます。 一時的なCSIボリュームが使用されている場合、ポッドの仕様で永続的なボリューム (PV) および永続的なボリュームクレーム (PVC) に由来するCSIボリュームを直接指定することはできません。 詳細については、「エフェメラルインラインCSIボリューム」をご参照ください。
Kubernetes 1.25では、Key Management Service (KMS) v2 alpha 1 APIが導入され、パフォーマンスが向上し、キーのローテーションと可観測性が最適化されます。 APIはAES-CBCをAES-GCMに置き換え、DEKを使用して静的データを暗号化します (Kubernetes Secrets) 。 暗号化プロセス中に追加の操作は必要ありません。 暗号化されたデータは、AES-GCMとAES-CBCを使用して復号できます。 詳細については、「データ暗号化のためのKMSプロバイダーの使用」をご参照ください。
Kubernetes 1.25では、オブジェクトストレージのプロビジョニングと使用を標準化するために、Container Object Storage Interface (COSI) 標準が導入されました。 COSIはアルファ相にある。
Kubernetes 1.25では、ポッドの
status
フィールドのPodHasNetworkがTrueの場合、ポッドランタイムサンドボックスが初期化されて作成され、サンドボックスのネットワークが設定されます。 これは、PodHasNetworkがTrueに設定された後にのみ、kubeletがコンテナーを起動するためにイメージのプルを開始するためです。 したがって、このフィールドは、画像の引き出し速度やアプリケーションの負荷などの特性を除いて、ポッド初期化レイテンシを示すために使用できます。 PodHasNetworkを使用すると、サービスレベル指標 (SLI) を正確に生成できます。 PodHasNetworkはアルファ段階にあります。 PodHasNetworkを使用する場合は、kubeletでPodHasNetworkCondition機能ゲートを有効にします。 詳細については、「」をご参照ください。これは、ポッドに対して報告される既存の初期化条件とどのように異なるのですか?Kubernetes 1.25では、StatefulSetsのminReadySecondsフィールドが安定フェーズに達します。 このフィールドを使用すると、各ポッドは指定された期間待機して、StatefulSetsのローリング更新を遅くすることができます。 詳細については、「最小準備完了秒数」をご参照ください。
Kubernetes 1.25では、DaemonSet maxSurgeが安定フェーズに達します。 maxSurgeは、DaemonSetローリング更新中にノードに作成できる追加ポッドの数を指定します。 これにより、DaemonSetのダウンタイムを最大限に削減できます。 2つのアクティブなポッドがノードで同じポートを共有できないため、DaemonSetsでmaxSurgeとhostPortを同時に使用することはできません。 詳細については、「DaemonSetでのローリング更新の実行」をご参照ください。
Kubernetes 1.25では、ユーザー名前空間を持つポッドを実行するためのアルファサポートが追加されます。 ユーザー名前空間では、ポッド内のルートユーザーをポッド外のゼロ以外のIDにマップできます。 IDは、コンテナビューのルートユーザーIDと、ホストビューの通常の非特権IDです。 この機能を使用するには、UserNamespacesStatelessPodsSupport機能ゲートを有効にし、コンテナーランタイムがこの機能をサポートしていることを確認する必要があります。 詳細については、「Kubernetes 1.25: ユーザー名前空間でポッドを実行するためのアルファサポート」をご参照ください。
Kubernetes 1.25では、RetroactiveDefaultStorageClassフィーチャーゲートが追加され、デフォルトのStorageClassをPVCに割り当てる方法が変更されます。 この機能ゲートを有効にする前に、PVCの前にStorageClassが作成されている場合にのみ、既定のStorageClassがPVCに割り当てられます。 そうでなければ、PVCのStorageClassはnil状態のままである。 この機能ゲートを有効にすると、PVCなどを削除して再作成する必要がなくなります。 デフォルトのStorageClassをPVCに自動的に割り当てることができます。 この機能ゲートは、Kubernetes 1.26でベータフェーズに到達し、Kubernetes 1.26でデフォルトで有効になっています。
Kubernetes 1.25では、JobPodFailurePolicyが追加されます。 この機能を使用すると、終了コードとポッドのステータスに基づいてポッドの中断を処理するようにジョブを構成できます。 この機能は、Kubernetes 1.26のベータフェーズに到達します。 ジョブでpodFailurePolicyフィールドを定義して、不要なポッドの再試行を回避し、ポッドの削除を無視するポッド障害ポリシーを設定できます。 詳細については、「ポッド障害ポリシーによる再試行可能および再試行不可能なポッド障害の処理」をご参照ください。
Kubernetes 1.25では、PodTopologySpreadがローリング更新中にポッドを均等に拡散できないという問題が修正されました。 minDomainsフィールドのベータサポートが追加されました。
Kubernetes 1.25では、kube-proxyは大規模クラスター用に最適化されています。 たとえば、1,000のエンドポイントを持つクラスターでは、未使用のiptablesルールが一定期間保持されます。 最大保持期間は、iptablesルールの最大同期サイクルに等しい。 したがって、古いiptablesルールを毎回スキャンする必要はありません。 小さなクラスターでは、未使用のiptablesルールはすぐに削除されます。
Kubernetes 1.26では、動的リソース割り当てAPIが追加されます。 APIを使用して、ポッド間またはポッド内のコンテナ間でリソースを要求および共有できます。 APIは、リソースを初期化するためのパラメーターも提供します。 APIはアルファフェーズにあります。 このAPIを使用するには、DynamicResourceAllocation機能ゲートとresource.k8s.io/v1alpha 1 APIグループを有効にし、管理するリソースのリソースドライバーをインストールする必要があります。 詳細については、「動的リソース割り当てのアルファAPI」をご参照ください。
Kubernetes 1.26では、非グレースフルノードシャットダウンがベータフェーズに達します。 ノードがシャットダウンされると、ノード上のポッドは終了状態になり、VolumeAttachmentsは削除できません。 ポッドがStatefulSetによって作成された場合、ポッド名の重複は許可されないため、ポッドを別のノードで再作成することはできません。 kubeletによって実行されるノードシャットダウンモニタリングに基づくグレースフルノードシャットダウンと比較して、グレースフルノードシャットダウンをトリガーしてノード上のポッドを別のノードに移行するには、
サービス停止
のテイントをノードに手動で追加する必要があります。 ノードが回復したら、テイントを手動で削除する必要があります。Kubernetes 1.26では、ポッドにボリュームをマウントするときにfsGroupをCSIドライバーに委任できます。 この機能は、CSIドライバがkubeletの代わりにfsGroupを適用してファイルとディレクトリのアクセス許可を変更するメカニズムを提供します。 この機能は、ユーザに対して透過的である。 CSIドライバー開発者の場合は、CSIドライバーfsGroupサポートを参照してください。
Kubernetes 1.26では、ポッドのスケジューリングゲートが追加され、ポッドがスケジューリングの準備ができたことをスケジューラに通知します。 外部イベントのために多数の保留中のポッドをスケジュールできない場合、スケジューラのパフォーマンスは悪影響を受けます。 上記の問題を解決するために、ポッドスケジューリングゲートでは、新しく作成されたポッドがスケジューリングの準備ができていないことを要求できます。
spec.schedulingGates
がポッドに設定されている場合、スケジューラはポッドをスケジュールするときにポッドを無視します。 このゲートでは、ポッドがスケジューリングの準備ができたことを確認し、ゲートを削除するための外部コントローラが必要です。 詳細については、「ポッドスケジューリングの準備」をご参照ください。Kubernetes 1.26では、CPUマネージャーがGAフェーズに到達します。 この機能は、Kubernetes 1.10のベータフェーズに達しました。 CPUマネージャはkubeletの一部であり、排他的CPUをコンテナに割り当てるために使用されます。 CPUマネージャは3つのポリシーをサポートします。 詳細については、「ノードのCPU管理ポリシーの制御」をご参照ください。
Kubernetes 1.26では、クロスネームスペースストレージデータソースのアルファサポートが追加されています。 この機能を使用すると、PVCの異なる名前空間に属するデータソースを指定できます。 詳細については、「Kubernetes v1.26: クロスネームスペースストレージデータソースのアルファサポート」をご参照ください。
Kubernetes 1.26では、
. spec.unhealthyPodEvictionPolicy=AlwaysAllow
PodDisruptionBudgetに不健康なポッドの立ち退きを常に許可するように強制するポリシー。 この特徴はアルファ段階にある。 この機能を使用するには、PDBUnhealthyPodEvictionPolicy機能ゲートを有効にする必要があります。 詳細については、「異常なポッド回避ポリシー」をご参照ください。Kubernetes 1.26では、
httpGet
for container lifecycleフックpreStopおよびpostStartは、scheme
およびheaders
フィールドの設定に準拠しています。 プローブと同じ方法で、カスタムヘッダーを設定し、HTTPSを有効にできます。 HTTPSが誤って使用された場合、エラーメッセージが返され、システムは互換性の問題を引き起こすことなくHTTPに切り替わります。 この機能を無効にするには、kubeletで-- feature-gates=ConsistentHTTPGetHandlers=false
を指定します。Kubernetes 1.26では、API Priority and Fairness (APF) は他の優先レベルからシートを借りることができます。 2つのフィールドが
. spec. 限られる
.lendablePercent
フィールドは、現在のレベルから他の優先レベルによって借用できる座席の割合を指定します。borrowingLimitPercent
フィールドは、他の優先レベルから借用できる座席数を指定します。Kubernetes 1.26では、kube-controller-managerコンポーネントの
-- concurrent-horizontal-pod-autoscaler-syncs
を設定して、Horizontal Pod Autoscaler (HPA) コントローラで使用されるワーカーの数を指定できます。Kubernetes 1.26では、HPAのラベルセレクターが検証されます。 複数のHPAが同じポッドまたはデプロイのコレクションを指す場合、HPAは有効にならず、AmbiguousSelectorイベントが生成されます。
Kubernetes 1.26では、
storageclass.kubernetes.io/is-default-class
アノテーションを追加して、複数のStorageClassesをデフォルトのStorageClassesとして指定すると、例外をスローする代わりに最新のStorageClassが選択されます。
廃止された機能
廃止および削除されたストレージドライバー
Kubernetes 1.25では、ストレージ統合のためにツリー内ストレージプラグインが削除されます。 SIG StorageはCSI移行をリリースし、以前のバージョンのKubernetesで、ツリー内ストレージプラグインをツリー外のContainer storage Interface (CSI) プラグインに移行しました。 Kubernetes 1.25では、コアCSI移行がGAフェーズに到達します。
Kubernetes 1.25では、GlusterFSおよびPortworxインツリーストレージプラグインは廃止され、Flocker、Quobyte、およびStorageOSインツリーストレージプラグインは削除されます。 インツリーvSphereストレージドライバーは、7.0u2より前のバージョンのvSphereをサポートしていません。
Kubernetes 1.26では、GlusterFSのツリー内ストレージドライバーは廃止され、廃止されたOpenStackのツリー内ストレージ統合 (Cinderボリューム) は削除されます。
iptablesチェーンの所有権のクリーンアップ
Kubernetesは通常、iptableチェーンを作成して、パケットが確実に宛先に到達できるようにします。 Iptableチェーンとその名前はKubernetesの内部実装であり、内部での使用にのみ適しています。 一部のコンポーネントはiptableチェーンに依存していますが、これらのチェーンはKubernetesのコンポーネントの一部ではありません。 詳細については、「KubernetesのIPTablesチェーンはAPIではありません」をご参照ください。
1.25以降のKubernetesバージョンでは、kubeletはIPTablesCleanup機能ゲートを使用して移行を段階的に完了します。 これにより、NATテーブルにKUBE-MARK-DROP、KUBE-MARK-MASQ、KUBE-POSTROUTINGなどのiptableチェーンが作成されるのを防ぐことができます。
iptableチェーンの所有権のクリーンアップの詳細については、「IPTablesチェーンの所有権のクリーンアップ」をご参照ください。
インツリー資格情報管理コードの削除
1.26以降のバージョンのKubernetesでは、AzureとGoogle Cloudの入れ子になったID認証コードがclient-goとkubectlから削除されます。 認証プラグインを使用して置き換えることができます。 詳細については、「認証プラグイン」をご参照ください。
kube-proxyからユーザースペースモードを削除
Kubernetes 1.26では、ユーザースペースモードが削除されます。 廃止予定のユーザースペースモードは、LinuxまたはWindowsではサポートされなくなりました。 LinuxユーザーはiptablesまたはIPVSを使用でき、Windowsユーザーはkernelspaceモードを使用できます。
-- mode userspace
を使用すると、エラーが返されます。Windows winkernel kube-proxyは、Windows HNS v1 APIをサポートしなくなりました。
Kubectlは
-- prune-whitelist
フラグを非推奨にしましたKubernetes 1.26では、
-- prune-whitelist
フラグが非推奨になり、-- prune-allowlist
に置き換えられて、包括的命名イニシアチブをサポートします。 廃止されたフラグは、後のバージョンで削除されます。DynamicKubeletConfigフィーチャーゲートの削除
DynamicKubeletConfigフィーチャゲートが削除されました。 ノードのkubelet設定は、APIを呼び出すことで動的に更新できます。 機能ゲートは、Kubernetes 1.24のkubeletから削除され、Kubernetes 1.26のAPIサーバーから削除されます。 これにより、コードが簡素化され、安定性が向上します。 代わりに、kubelet設定ファイルを変更してから、kubeletを再起動することを推奨します。 詳細については、「コードからDynamicKubeletConfig feature gateを削除する」をご参照ください。
コマンドライン引数の削除
Kubernetes 1.25では、kubeadm UnversionedKubeletConfigMapがGAフェーズに到達します。 デフォルトでは、kube-systemまたはkubelet-configはkube-systemまたはkubelet-kubelet-config-x.yyの代わりに使用されます。
Kubernetes 1.25では、kubeadmはコントロールプレーンノードに
node-role.kubernetes.io/master:NoSchedule
ラベルを追加しなくなりました。 kubeadmアップグレードが適用されると、ラベルは削除されます。Kubernetes 1.25では、Seccompアノテーション
seccomp.security.alpha.kubernetes.io/pod
およびcontainer.seccomp.security.alpha.kubernetes.io
はサポートされなくなりました。 SeccompProfileの使用を推奨します。 詳細については、「コンテナーのSyscallsをseccompで制限する」をご参照ください。Kubernetes 1.25および1.26では、kube-controller-managerの一部のスタートアップ引数が廃止され、削除されます。
deleting-pods-qps、deleting-pods-burst、およびregister-retry-count引数は削除されます。
experimental-cluster-signing-duration引数とpod-eviction-timeout引数は廃止され、cluster-signing-durationに置き換えられます。
Kubernetes 1.27では、pod-eviction-timeoutとenable-taint-managerが削除されます。
Kubernetes 1.26では、一部のロギング関連のコマンドライン引数が削除されます。 これらの引数は、以前のバージョンでは非推奨です。
Kubernetes 1.26では、-- master-service-namespaceフラグが非推奨になります。 このフラグはAPIサーバーでは使用されません。
Kubernetes 1.26では、kubectl runの未使用のサブコマンドが非推奨としてマークされ、以降のバージョンで削除されます。
-- cascade
、-- filename
、-- force
、-- grace-period
、-- kustomize
、-- recursive
、-- timeout
、および-- wait
。
非推奨API
Kubernetes 1.25および1.26では、一部のAPIは非推奨です。 詳細については、「非推奨API」をご参照ください。
CronJob
1.25以降のバージョンのKubernetesでは、バッチ /v1beta1 APIを使用してCronJobを作成できなくなりました。 Kubernetes 1.21以降のバージョンで利用可能なbatch/v1 APIを使用できます。
EndpointSlice
1.25以降のバージョンのKubernetesでは、discovery.k8s.io/v1beta1 APIを使用してEndpointSliceを作成できなくなりました。 Kubernetes 1.21以降のバージョンで利用可能なdiscovery.k8s.io/v1 APIを使用できます。
discovery.k8s.io/v1の次の変更に細心の注意を払う必要があります。
エンドポイントのNodeNameフィールドは、廃止されたトポロジ ["kubernetes.io/hostname"]gフィールドを置き換えるために使用されます。
エンドポイントのZoneフィールドは、廃止されたトポロジ ["kubernetes.io/zone"] フィールドを置き換えるために使用されます。
Topologyフィールドは、deprecatedTopologyフィールドに置き換えられます。 このフィールドはAPI v1では使用できません。
重要クラスターのアップグレード後、CoreDNSポッドが
* v1beta1.EndpointSliceのリストに失敗した
ことを示すエラーメッセージが表示されるかどうかを確認します。 その場合は、CoreDNSコンポーネントを再起動またはアップグレードします。 詳細については、「」をご参照ください。CoreDNSが非推奨APIを使用するのはなぜですか?.イベント
Kubernetes 1.25では、events.k8s.io/v1beta1 APIを使用してイベントを作成できなくなりました。 Kubernetes 1.19以降のバージョンで利用可能なevents.k8s.io/v1 APIを使用できます。
events.k8s.io/v1の次の変更に細心の注意を払う必要があります。
タイプフィールドは、通常または警告にのみ設定できます。
involvedObjectフィールドは、関連として名前が変更されます。
events.k8s.io/v1イベントを作成するときは、action、reason、reportingController、およびreportingInstanceフィールドが必要です。
eventTimeフィールドは、非推奨のfirstTimestampフィールドを置き換えるために使用されます。 firstTimestampフィールドの名前はdeprecatedFirstTimestampに変更され、events.k8s.io/v1イベントでは使用できません。
series.lastObservedTimeフィールドは、非推奨のlastTimestampフィールドを置き換えるために使用されます。 lastTimestampフィールドの名前はdeprecatedLastTimestampに変更され、events.k8s.io/v1イベントでは使用できません。
series.countフィールドは、廃止されたcountフィールドの代わりに使用されます。 countフィールドの名前はdeprecatedCountに変更され、events.k8s.io/v1イベントでは使用できません。
reportingControllerフィールドは、非推奨のd source.com ponentフィールドを置き換えるために使用されます。 e source.comのponentフィールドはs deprecatedSource.comのponentに名前が変更され、events.k8s.io/v1イベントでは許可されません。
reportingInstanceフィールドは、非推奨のsource.hostフィールドを置き換えるために使用されます。 source.hostフィールドの名前はdeprecatedSource.hostに変更され、events.k8s.io/v1イベントでは使用できません。
PodDisruptionBudget
1.25以降のバージョンのKubernetesでは、policy/v1beta1 APIを使用してPodDisruptionBudgetを作成できなくなりました。 Kubernetes 1.21以降のバージョンで利用可能なpolicy/v1 APIを使用できます。
policy/v1 PodDisruptionBudgetsのspec.selectorが空 ({}) の場合、名前空間内のすべてのポッドが選択されます。 policy/v1beta1 PodDisruptionBudgetsで、spec.selectorが空の場合、ポッドは選択されません。 spec.selectorを指定しない場合、両方のAPIバージョンでポッドは選択されません。
PodSecurityPolicy
1.25以降のバージョンのKubernetesでは、policy/v1beta1 APIを使用してPodSecurityPolicyを作成できなくなり、PSPアドミッションコントローラーが削除されます。 PodSecurityPolicyからポッドセキュリティ入場またはサードパーティの入場ウェブフックに移行する必要があります。
移行の詳細については、「PodSecurityPolicyから組み込みPodSecurity Admission Controllerへの移行」をご参照ください。 廃止の詳細については、「PodSecurityPolicy廃止: 過去、現在、未来」をご参照ください。
RuntimeClass
1.25以降のバージョンのKubernetesでは、node.k8s.io/v1beta1 APIを使用してRuntimeClassを作成できなくなりました。 Kubernetes 1.20以降のバージョンで利用可能なnode.k8s.io/v1 APIを使用できます。
HorizontalPodAutoscaler
1.25以降のバージョンのKubernetesでは、自動スケーリング /v2beta1 APIを使用して水平ポッド自動スケーラー (HPA) を作成できなくなりました。
1.26以降のバージョンのKubernetesでは、自動スケーリング /v2beta2 APIを使用してHPAを作成できなくなりました。 Kubernetes 1.23以降のバージョンで利用可能な自動スケーリング /v2 APIを使用できます。
フロー制御リソース
1.26以降のバージョンのKubernetesでは、flowcontrol.apiserver.k8s.io/v1beta1 APIを使用してFlowSchemaまたはPriorityLevelConfigurationを作成できなくなりました。 APIは、Kubernetes 1.23以降のバージョンでflowcontrol.apiserver.k8s.io/v1beta2を使用できます。 APIは、Kubernetes 1.26以降のバージョンでflowcontrol.apiserver.k8s.io/v1beta3を使用できます。
機能ゲート
特徴ゲートは3つの位相を有する。 アルファフェーズでは、フィーチャゲートはデフォルトで無効になっています。 ベータフェーズでは、機能ゲートはデフォルトで有効になっています。 GAフェーズでは、機能ゲートはデフォルトで有効になっており、無効にすることはできません。 機能ゲートの有効化と無効化に使用されるスイッチは、後のバージョンでは削除されます。 詳細については、「機能ゲート」をご参照ください。
Kubernetes 1.25では、SeccompDefaultがベータフェーズに到達します。 SeccompDefaultの使用方法の詳細については、「コンテナーのSyscallsをseccompで制限する」をご参照ください。
Kubernetes 1.25では、CustomResourceDefinition (CRD) Validation Expression Languageがベータフェーズに達し、CustomResourceValidationExpressionsがデフォルトで有効になっています。 CRDの検証には、webhookを使用するよりもCEL (Common Expression Language) を使用する方が効率的です。 詳細については、「検証ルール」をご参照ください。
Kubernetes 1.25では、ServerSideFieldValidation機能ゲートがベータフェーズに達し、デフォルトで有効になっています。 APIサーバーは、不明なフィールドを検証できます。 したがって、後のバージョンでは、フィールド検証機能はkubectlから削除されます。 詳細については、「APIサーバーでサポートされている不明なフィールド検証」をご参照ください。
Kubernetes 1.25では、ContainerCheckpointアルファ機能が追加され、Kubelet Checkpoint APIが有効になっています。 詳細については、「Kubelet Checkpoint API」をご参照ください。
Kubernetes 1.25では、PodHasNetworkConditionアルファ機能が追加されます。 この機能により、kubeletはポッドにPodHasNetwork条件を追加できます。 詳細については、「PodHasNetwork」をご参照ください。
Kubernetes 1.25では、UserNamespacesStatelessPodsSupportアルファ機能が追加され、ステートレスポッドのユーザー名前空間を有効にします。
Kubernetes 1.25では、JobPodFailurePolicyアルファ機能が追加されます。 この機能により、ジョブは終了コードとポッドのステータスに基づいてポッドの中断を処理できます。 この機能は、Kubernetes 1.26のベータフェーズに到達します。
Kubernetes 1.25では、MultiCIDRRRangeAllocatorアルファ機能が追加され、NodeIPAMが複数のClusterCIDRをサポートできるようになりました。
-- cidr-allocator-type=MultiCIDRRangeAllocator
は、コントローラが複数のClusterCIDRをサポートできるように、kube-controller-manager用に設定されています。Kubernetes 1.25では、StatefulSetMinReadySeconds機能がGAフェーズに到達します。 この機能はデフォルトでminReadySecondsフィールドをサポートしており、無効にすることはできません。
Kubernetes 1.25では、CronJobTimeZone機能がGAフェーズに到達します。 この機能は、TimeZoneフィールドをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25では、DaemonSetUpdateSurge機能がGAフェーズに到達します。 この機能は、DaemonSet MaxSurgeフィールドをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25では、IdentifyPodOS機能がGAフェーズに到達します。 この機能はデフォルトでspec.podOSフィールドをサポートするために有効になっており、無効にすることはできません。
Kubernetes 1.25では、CSIInlineVolume機能がGAフェーズに達します。 この機能は、CSIインラインボリュームをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25では、EphemeralContainers機能がGAフェーズに到達します。 この機能は、エフェメラルコンテナをサポートするためにデフォルトで有効になっていますが、無効にできません。
Kubernetes 1.25では、CSINodeExpandSecret機能が追加されます。 この機能により、ノードを追加するときに、Secretsに格納されているID認証データをCSIドライバに渡すことができます。
Kubernetes 1.25では、CSIMigration機能がGAフェーズに到達します。 この機能はデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25では、CSIMigrationPortworx機能がベータフェーズに到達します。
Kubernetes 1.25では、ProbeTerminationGracePeriod機能はベータフェーズのままですが、デフォルト値はTrueに変わります。 詳細については、「Probe-level terminationGracePeriodSeconds」をご参照ください。
Kubernetes 1.26では、JobTrackingWithFinalizers機能がGAフェーズに到達します。 この機能はデフォルトで有効になっており、残りのポッドをカウントするのではなく、ジョブのポッドを追跡してジョブの進行状況を追跡します。 詳細については、「ファイナライザーによるジョブ追跡」をご参照ください。
Kubernetes 1.26では、PDBUnhealthyPodEvictionPolicyアルファ機能が追加され、PodDisruptionBudgetの異常なポッド削除ポリシーを設定できます。
Kubernetes 1.26では、動的リソース割り当てAPIがサポートされています。 カスタムパラメータと独立したポッドライフサイクルを使用してリソースを管理および使用できます。
Kubernetes 1.26では、StatefulSet開始順序を設定できるように、StatefulSetStartOrdinalアルファ機能が追加されています。
Kubernetes 1.26では、ServiceInternalTrafficPolicy機能がGAフェーズに到達します。 この機能を使用すると、internalTrafficPolicyフィールドを使用して、サービスの内部トラフィックポリシーを定義できます。 この機能はデフォルトで有効になっており、無効にすることはできません。 詳細については、「サービス内部トラフィックポリシー」をご参照ください。
Kubernetes 1.26では、ValidatingAdmissionPolicyアルファ機能が追加されます。 CEL式を使用して、拡張可能なアドミッションコントローラを実装できます。
Kubernetes 1.26では、MixedProtocolLBService機能がGAフェーズに到達します。 この機能により、同じLoadBalancerサービスで異なるプロトコルを使用できます。
Kubernetes 1.26では、EndpointSliceTerminatingCondition機能がGAフェーズに到達します。 この機能は、EndpointSlice TerminatingおよびServing条件フィールドをサポートするために有効になっており、無効にすることはできません。
Kubernetes 1.26では、APIServerIdentity機能がベータフェーズに到達します。 デフォルトでは、この機能はkube-systemで有効になっており、アクティブなAPIサーバーごとにリースを作成します。
Kubernetes 1.26では、DelegateFSGroupToCSIDriver機能がGAフェーズに達し、無効にすることはできません。
Kubernetes 1.26では、NodeOutOfServiceVolumeDetach機能がベータフェーズに達し、デフォルトで有効になっています。
node.kubernetes.io/out-of-service
を追加してノードをout-of-serviceとしてマークした後、テイントを許容しないポッドは強制的に削除されます。 ボリュームのデタッチ操作は、ノード上の終了したポッドに対して実行されます。Kubernetes 1.26では、ServiceIPStaticSubrange機能がGAフェーズに到達します。 この機能により、Service ClusterIP割り当てポリシーはClusterIP範囲を細分化できます。
Kubernetes 1.26では、CPUManagerおよびDevicePlugins機能がGAフェーズに到達します。 これらの機能はデフォルトで有効になっており、無効にできません。
Kubernetes 1.26では、ComponentSLIsアルファ機能が追加され、ヘルスチェックメトリックを収集するために、次のKubernetesコンポーネントで
/metrics/slis
エンドポイントを有効にします: kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager。Kubernetes 1.26では、WindowsHostProcessContainers機能がGAフェーズに達します。 この機能は、Windows HostProcessコンテナをサポートするためにデフォルトで有効になっています。
Kubernetes 1.26では、ExpandedDNSConfig機能がベータフェーズに到達します。 この機能により、より多くのDNS検索パスとDNS検索パスのより長いリストが可能になります。 この機能には、コンテナー実行時のサポートが必要です。
Kubernetes 1.26では、LegacyServiceAccountTokenNoAutoGeneration機能がGAフェーズに到達します。 この機能は、Secretsに基づくServiceAccountトークンの自動生成を無効にします。 この機能はデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.26では、ProxyTerminatingEndpoints機能がベータフェーズに到達します。 この機能は、ExternalTrafficPolicy=Localの場合、kube-proxyが終了エンドポイントを処理できるようにデフォルトで有効になっています。
Kubernetes 1.26では、LegacyServiceAccountTokenTrackingアルファ機能が追加されます。 デフォルトでは、この機能は無効化されています。 この機能は、
kubernetes.io/legacy-token-last-used
ラベルをSecretsに基づいて生成されたServiceAccountトークンに追加し、トークンの有効期限を示します。Kubernetes 1.26では、PodDisruptionConditions機能がベータフェーズに達し、デフォルトで有効になっています。 ポッドにDisruptionTarget条件を追加して、障害が発生してポッドが削除されようとしていることを示し、
reason
フィールドでポッドの終了理由を照会できます。 詳細については、「ポッドの中断条件」をご参照ください。
Kubernetes 1.26の機能強化
セキュリティ強化
ACKでは、クラスターノード上の次のKubernetesファイルへのアクセスがさらに制限されています。
ファイルパス | アクセス許可 |
/etc/kubernetes/admin.conf | 600 |
/etc/kubernetes/kube.conf | 600 |
/etc/kubernetes/controller-manager.conf | 600 |
/etc/kubernetes/kubelet.conf | 600 |
/etc/kubernetes/scheduler.conf | 600 |
/etc/kubernetes/manifests/*.yaml | 600 |
/etc/kubernetes/pki/*.key | 600 |
/etc/kubernetes/pki/*.crt | 600 |
/etc/kubernetes/pki/dashboard/*.crt | 600 |
/etc/kubernetes/pki/etcd/*.pem | 600 |
/var/lib/etcd/cert/*.pem | 600 |
/var/lib/etcd/cert/*.csr | 600 |
/var/lib/kubelet/pki/*.crt | 600 |
/var/lib/kubelet/config.yaml | 600 |
/usr/lib/systemd/system/etcd.service | 600 |
/etc/systemd/system/kubelet.service | 600 |
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf | 600 |