すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:Kubernetes 1.26 リリースノート

最終更新日:Jun 05, 2026

Alibaba Cloud Container Compute Service (ACS) は、認定 Kubernetes 適合性プログラムに準拠しています。このドキュメントでは、Kubernetes 1.26 の主な変更点 (アップグレードノート、破壊的変更、新機能、非推奨の機能および API、フィーチャーゲート、セキュリティ強化) について説明します。

アップグレードノート

Kubernetes 1.26 をサポートするために、ACK クラスターでは以下のコンポーネントが更新されています。

コアコンポーネント

バージョン

備考

Kubernetes

1.26.15-aliyunacs.1

  • Kubernetes 1.26 には多くの最適化が含まれています。アップグレードする前に、「リリース分析」セクションを注意深くお読みください。

  • Kubernetes 1.25 と 1.26 では、多数のベータ API が非推奨になっています。アップグレードする前に、ベータ API を使用しているコントローラーとアプリケーションが、推奨される安定版 API バージョンに更新されていることを確認してください。詳細については、「非推奨 API」をご参照ください。

  • Kubernetes 1.26 では CRI v1alpha2 のサポートが終了し、コンテナランタイムは CRI v1 をサポートする必要があります。そのため、Kubernetes 1.26 では containerd 1.6.0 以降が必要です。クラスターをアップグレードする前に、containerd を 1.6.0 以降にアップグレードしてから、ノードを Kubernetes 1.26 にアップグレードする必要があります。

  • PodSecurityPolicy は Kubernetes 1.21 で非推奨となり、Kubernetes 1.25 で削除されました。PodSecurityPolicy は使用が複雑で、意図した以上の権限を容易に付与してしまうため、深刻な可用性の問題を引き起こします。代替ソリューションの詳細については、「リリース分析」をご参照ください。

etcd

v3.5.9

なし

CoreDNS

v1.9.3.10-7dfca203-aliyun

なし

CRI

containerd 1.6.22.1-20240524143336

Kubernetes 1.24.0 以降のみをサポートします。

CSI

v1.30.1-1.acs-685ce77-aliyun

なし

CNI

Terway および TerwayControlplane v1.5.0 以降

なし

リリース分析

破壊的変更

  • Kubernetes 1.25 および 1.26 では、多数のベータ API が非推奨になりました。アップグレードする前に、ベータ API を使用するコントローラーとアプリケーションが、安定版 API バージョンに更新されていることを確認する必要があります。詳細については、「非推奨 API」をご参照ください。

  • Kubernetes 1.26 では CRI v1alpha2 のサポートが廃止され、コンテナランタイムは CRI v1 をサポートする必要があります。そのため、Kubernetes 1.26 は containerd 1.5 以前をサポートしません。containerd 1.6 が最低限必要なバージョンです。クラスターをアップグレードする場合、ノードを Kubernetes 1.26 にアップグレードする前に、containerd を 1.6.0 以降にアップグレードする必要があります。

  • PodSecurityPolicy は Kubernetes 1.21 で非推奨となり、Kubernetes 1.25 で削除されました。PodSecurityPolicy は使用方法が複雑で、意図した以上の権限を容易に付与してしまう可能性があり、深刻な可用性の問題を引き起こします。詳細については、「The Historical Context of PodSecurityPolicy」をご参照ください。

    クラスターで PodSecurityPolicy を使用している場合は、アップグレードする前に、次のいずれかのアドミッションコントロールを適用してください。

    • ACK が提供するポリシー管理機能を使用してください。ACK は、Kubernetes アプリケーションシナリオに合わせたより多くのポリシールールを提供し、ルールの設定を簡素化します。詳細については、「Configure container security policies」をご参照ください。

    • 組み込みの Pod Security アドミッションを使用してください。この機能はより簡単に使用できます。詳細については、「Pod Security Admission」をご参照ください。PodSecurityPolicy から組み込みの PodSecurity アドミッションコントローラーへの移行に関する詳細については、「Migrate from PodSecurityPolicy to the Built-in PodSecurity Admission Controller」をご参照ください。

    • サードパーティのアドミッションプラグインをデプロイして設定してください。

  • 1.26.15-aliyunacs.1 では、以下の CVE 脆弱性が修正されています:

    • CVE-2023-45288

    • CVE-2024-3177

    • CVE-2024-24786

新機能

  • エフェメラルコンテナ機能は Kubernetes 1.23 でベータ版でしたが、Kubernetes 1.25 で安定版 (Stable) になりました。コンテナがクラッシュした場合や、kubectl exec コマンドを実行するためのデバッグツールがない場合に、既存の Pod でエフェメラルコンテナを実行して、そのステータスを確認したり、任意のコマンドを実行したりできます。詳細については、「Ephemeral Containers」をご参照ください。

  • Kubernetes 1.25 では、cgroups v2 のサポートが安定版 (Stable) になりました。cgroups v2 は cgroups v1 に比べて多くの点が改善されています。詳細については、「cgroup v2」をご参照ください。

  • Kubernetes 1.25 では、単体テスト適合性テストWindows Operational Readiness のための新しいリポジトリなど、Windows のサポートの最適化が継続されています。

  • Kubernetes 1.25 では、k8s.gcr.io イメージレジストリが registry.k8s.io に移行され、トラフィックが registry.k8s.io にリダイレクトされます。詳細については、「k8s.gcr.io Redirect to registry.k8s.io」をご参照ください。

  • Kubernetes 1.25 では、NetworkPolicy の EndPort フィールドが一般提供 (GA) となりました。NetworkPolicy プロバイダーが EndPort フィールドをサポートしている場合、このフィールドを使用して NetworkPolicy でポート範囲を指定できます。NetworkPolicy プロバイダーが EndPort をサポートしていない場合は、単一ポートのネットワークポリシーのみが作成されます。詳細については、「Network Policies」をご参照ください。

  • Kubernetes 1.25 では、ローカルエフェメラルストレージの容量の分離が一般提供 (GA) となりました。この機能は、EmptyDir など、Pod 間のローカルエフェメラルストレージ容量の分離をサポートします。したがって、Pod が設定された制限を超えてローカルエフェメラルストレージを消費した場合、kubelet はその Pod を退去させて、共有リソースの消費に対するハードリミットを強制できます。詳細については、「Local Ephemeral Storage Capacity Isolation」をご参照ください。

  • Kubernetes 1.25 では、CSI エフェメラルボリュームが安定版 (Stable) になりました。この機能により、PersistentVolume (PV) や PersistentVolumeClaim (PVC) を介さずに、一時的な使用のために Pod 定義で CSI ボリュームを直接指定できます。詳細については、「CSI Ephemeral Volumes」をご参照ください。

  • Kubernetes 1.25 では、パフォーマンス、ローテーション、および可観測性を向上させるために、KMS v2 alpha1 API が導入されました。この API は、データ暗号化キー (DEK) を使用して Kubernetes Secret の保管時の暗号化を実装するために、AES-CBC の代わりに AES-GCM を使用します。このプロセスに追加の操作は不要で、AES-GCM と AES-CBC の両方での読み取りに対応しています。詳細については、「Using a KMS provider for data encryption」をご参照ください。

  • Kubernetes 1.25 では、Kubernetes はオブジェクトストレージの新しい標準インターフェイスである Container Object Storage Interface (COSI) を規定しました。COSI はオブジェクトストレージの使用を標準化することを目指しており、現在アルファ版です。

  • Kubernetes v1.25 では、Pod の status フィールドにある PodHasNetwork 条件が True に設定されている場合、Pod ランタイムサンドボックスが正常に初期化および作成され、ネットワーキングが設定されていることを示します。kubelet は、PodHasNetwork 条件が True に設定された後にのみ、イメージのプルとコンテナの起動を開始します。したがって、この条件は、イメージのプル速度やアプリケーションの負荷などの要因を除外した、Pod の初期化レイテンシーのメトリックとして使用できます。これにより、サービスレベルインジケーター (SLI) を正確に生成できます。PodHasNetwork はアルファ段階であるため、これを使用するには kubelet で PodHasNetworkCondition フィーチャーゲートを有効にする必要があります。詳細については、「the difference between PodHasNetwork and Initialized」をご参照ください。

  • Kubernetes 1.25 では、StatefulSet の minReadySeconds フィールドが安定版 (Stable) になりました。これにより、各 Pod が指定された期間待機して、StatefulSet のローリングアップデートを遅らせることができます。詳細については、「Minimum Ready Seconds」をご参照ください。

  • Kubernetes 1.25 では、DaemonSet の maxSurge フィールドが安定版 (Stable) になりました。これにより、DaemonSet ワークロードはローリングアップデート中にノード上で同じ Pod の複数のインスタンスを実行でき、DaemonSet のダウンタイムを最小限に抑えるのに役立ちます。2 つのアクティブな Pod がノード上で同じポートを共有することはできないため、maxSurgehostPort フィールドを同時に使用することはできません。詳細については、「Perform a Rolling Update on a DaemonSet」をご参照ください。

  • Kubernetes 1.25 では、Pod をユーザー名前空間で実行するためのアルファ機能が導入されました。Pod 内の root ユーザーは、コンテナの外部で非ゼロの ID にマッピングされます。これにより、Pod はコンテナの観点からは root ユーザーとして実行されますが、ホストの観点からは通常の非特権ユーザーとして実行されます。この機能はアルファ版です。この機能を使用するには、UserNamespacesStatelessPodsSupport フィーチャーゲートを有効にし、コンテナランタイムがこの機能をサポートしていることを確認する必要があります。詳細については、「Alpha support for running Pods with user namespaces」をご参照ください。

  • Kubernetes 1.25 では、RetroactiveDefaultStorageClass という名前のフィーチャーゲートが追加され、これによりデフォルトの StorageClass が PVC に割り当てられる方法が変更されます。以前は、デフォルトの StorageClass を割り当てるには、StorageClass を作成してから PVC を作成する必要がありました。そうしないと、PVC の StorageClass は nil のままでした。この機能が有効になると、StorageClass が割り当てられていない PVC は、再作成することなくデフォルトの StorageClass で自動的に更新されます。この機能は Kubernetes 1.26 でベータ版になり、デフォルトで有効になっています。

  • Kubernetes 1.25 では、JobPodFailurePolicy 機能が追加され、コンテナの終了コードと Pod の状態に基づいて Pod の障害を処理する方法を Job で設定できるようになりました。この機能は Kubernetes 1.26 でベータ版になりました。Job 定義で podFailurePolicy フィールドを設定して Pod 障害ポリシーを指定でき、これにより不要な Pod の再試行を回避し、Pod の退去を無視できます。詳細については、「Pod failure policy」をご参照ください。

  • Kubernetes 1.25 では、PodTopologySpread 機能がローリングアップデート中に制約に違反して Pod の不均等な分散を引き起こす問題が修正されました。minDomains フィールドはベータ版です。

  • Kubernetes 1.25 では、大規模クラスターにおける kube-proxy のパフォーマンスが向上しました。たとえば、1,000 の Endpoint を持つクラスターでは、未使用の iptables ルールは最大 1 同期期間保持され、そのため各同期中のスキャンから除外されます。小規模なクラスターでは、未使用の iptables ルールは引き続き即座に削除されます。

  • Kubernetes 1.26 では、Pod 間および Pod 内のコンテナ間でリソースを要求および共有するための動的リソース割り当て機能が追加されました。この機能により、ユーザーはパラメーターを指定してリソースを初期化できます。この機能はアルファ版です。この機能を使用するには、DynamicResourceAllocation フィーチャーゲートと resource.k8s.io/v1alpha1 API グループを有効にし、管理したい特定のリソース用のドライバーをインストールする必要があります。詳細については、「Alpha API For Dynamic Resource Allocation」をご参照ください。

  • Kubernetes 1.26 では、非グレースフルなノードシャットダウンがベータ段階に入りました。ノードに障害が発生すると、そのノード上の Pod は Terminating 状態のままとなり、VolumeAttachment を削除できなくなります。StatefulSet の Pod の場合、Pod 名は一意である必要があるため、別のノードで新しい Pod は開始されません。グレースフルなノードシャットダウンがノードのシャットダウンイベントを検出する kubelet によって処理されるのとは異なり、非グレースフルなノードシャットダウンでは、手動で out-of-service taint をノードに追加する必要があります。これにより、Pod が新しい実行中のノードに移動されます。ノードが回復した後、手動で taint を削除する必要もあります。

  • Kubernetes 1.26 では、マウント中に Pod の fsGroup を CSI ドライバーに渡せるようになり、これにより kubelet の代わりに CSI ドライバーがボリューム内のファイルとディレクトリの権限を変更できるようになります。この機能は、ほとんどのユーザーにとって透過的です。CSI ドライバーの開発者である場合は、「CSI Driver fsGroup Support」をご参照ください。

  • Kubernetes 1.26 で導入された Pod スケジューリングゲート機能は、いつ Pod のスケジューリングを開始するかをスケジューラーに通知します。多数の Pod が外部イベントによってブロックされ、長期間スケジューリングできない場合、スケジューラーのパフォーマンスが影響を受ける可能性があります。スケジューリングゲート機能は、新しく作成された Pod がまだスケジューリングの準備ができていないことを宣言できるようにすることで、この問題を解決します。Pod に spec.schedulingGates フィールドが設定されている場合、スケジューラーはその Pod を無視し、不要なスケジューリング試行を防ぎます。この機能では、Pod がスケジューリングの準備ができたタイミングを判断し、ゲートをクリアするための外部コントローラーが必要です。詳細については、「Pod Scheduling Gates」をご参照ください。

  • Kubernetes 1.26 では、CPU マネージャーが一般提供 (GA) になりました。この機能は Kubernetes v1.10 からベータ版でした。これは kubelet の一部であり、コンテナに専用の CPU を割り当てる役割を担います。CPU マネージャーは 3 つのポリシーオプションに対応しています。詳細については、「Control CPU Management Policies on the Node」をご参照ください。

  • Kubernetes 1.26 では、クロス名前空間ストレージデータソースのアルファサポートが追加されました。これにより、ソースデータが異なる名前空間に属している場合に、PVC のデータソースを指定できます。詳細については、「Cross-Namespace Storage Data Sources」をご参照ください。

  • Kubernetes v1.26 では、PodDisruptionBudget で異常な Pod の退去ポリシーを設定できます。.spec.unhealthyPodEvictionPolicy=AlwaysAllow を設定すると、PDB によってブロックされることなく、異常な Pod を退去させることができます。この機能は現在アルファ段階であり、使用するには PDBUnhealthyPodEvictionPolicy フィーチャーゲートを有効にする必要があります。詳細については、「Unhealthy Pod Eviction Policy」をご参照ください。

  • Kubernetes v1.26 では、preStop および postStart コンテナライフサイクルフックの httpGet ハンドラーは、scheme および headers フィールドに従います。これにより、動作がプローブと一致するようになり、カスタムヘッダーを設定したり HTTPS を使用したりできます。HTTP が期待されるときに HTTPS が使用された場合、エラーがログに記録され、ハンドラーは下位互換性を維持するために HTTP の使用にフォールバックします。この機能は、--feature-gates=ConsistentHTTPGetHandlers=false フラグを設定することで kubelet で無効にできます。

  • Kubernetes v1.26 では、API 優先度と公平性 (APF) が他の優先度レベルからシートを借用できるようになります。.spec.limited に 2 つの新しいフィールドが追加されました:lendablePercent は貸し出し可能なシートの割合を指定し、borrowingLimitPercent は他の優先度レベルから借用できるシートの最大割合を指定します。

  • Kubernetes v1.26 では、kube-controller-manager コンポーネントは --concurrent-horizontal-pod-autoscaler-syncs を設定して HPA (HorizontalPodAutoscaler) コントローラーのワーカー数を指定することに対応しました。

  • Kubernetes 1.26 では、HPA のラベルセレクター検証が追加されました。複数の HPA が同じ Pod のセットまたは同じ Deployment を指している場合、これらの HPA は有効にならず、システムは AmbiguousSelector イベントを生成します。

  • Kubernetes v1.26 では、複数の StorageClass がデフォルトとして設定されている場合 (storageclass.kubernetes.io/is-default-class アノテーション経由)、例外がスローされる代わりに、最新の StorageClass がデフォルトとして選択されます。

非推奨の機能

  • ストレージドライバーの非推奨と削除

    • Kubernetes 1.25 では、ストレージ統合のための in-tree ボリュームプラグインが削除されます。CSI 移行は、in-tree ボリュームプラグインのコードを out-of-tree CSI ドライバーに移行するために、以前のバージョンで SIG Storage が継続的に行ってきた取り組みです。Kubernetes 1.25 では、コア CSI 移行が安定版になりました。

    • Kubernetes 1.25 では、GlusterFS および Portworx の in-tree ボリュームプラグインが非推奨となり、FlockerQuobyte、および StorageOS の in-tree ボリュームプラグインが削除されました。in-tree vSphere ボリュームドライバーは、vSphere バージョン 7.0u2 以前をサポート対象外となりました。

    • Kubernetes 1.26 では、GlusterFS の in-tree ドライバーが削除され、非推奨の OpenStack in-tree ストレージ統合 (Cinder ボリュームタイプ) が削除されました。

  • iptables チェーンの所有権のクリーンアップ

    Kubernetes は通常、ネットワークパケットが期待どおりに配信されることを保証するために iptables チェーンを作成します。これらの iptables チェーンとその名前は、Kubernetes の内部実装の詳細であり、内部使用のみを目的としています。一部のコンポーネントは現在、これらの内部実装の詳細に依存しています。Kubernetes は一般的に、これらの詳細に依存するツールをサポートしない方針です。詳細については、「Kubernetes's IPTables Chains Are Not API」をご参照ください。

    Kubernetes 1.25 以降、kubelet は IPTablesCleanup フィーチャーゲートを使用して、KUBE-MARK-DROPKUBE-MARK-MASQKUBE-POSTROUTING などの NAT テーブル内の iptables チェーンの作成を停止するよう、段階的に移行します。

    iptables チェーンの所有権のクリーンアップに関する詳細については、「Cleaning up iptables chain ownership」をご参照ください。

  • in-tree 認証情報管理コードの削除

    Kubernetes 1.26 以降、Azure および Google Cloud 用の埋め込みベンダー固有認証コードが client-go および kubectl から削除されました。代わりに認証プラグインメカニズムを使用できます。詳細については、「Authentication plugins」をご参照ください。

  • kube-proxy コンポーネントの削除

    • Kubernetes 1.26 では、Userspace プロキシモードが削除されました。この非推奨モードは、Linux または Windows ではサポートされなくなりました。Linux ユーザーは iptables または IPVS を使用し、Windows ユーザーは Kernelspace を使用する必要があります。--mode userspace を使用すると失敗するようになります。

    • Windows winkernel kube-proxy は、Windows HNS v1 API をサポート対象外となりました。

  • kubectl --prune-whitelist フラグの非推奨

    Kubernetes 1.26 では、Inclusive Naming Initiative をサポートするために、--prune-whitelist フラグは 非推奨となり、--prune-allowlist に置き換えられ、将来完全に削除される予定です。

  • 動的 Kubelet 設定の削除

    DynamicKubeletConfig フィーチャーゲートは削除されました。この機能により、API を使用してノード上の kubelet 設定を動的に更新できました。関連するコードは Kubernetes 1.24 で kubelet から、Kubernetes 1.26 で API サーバーから削除されました。このロジックを削除することで、コードが簡素化され、信頼性が向上します。推奨される方法は、kubelet 設定ファイルを変更して kubelet を再起動することです。詳細については、「Remove Dynamic Kubelet Configuration from the API server」をご参照ください。

  • コマンドラインパラメーターの削除

    • Kubernetes 1.25 では、kubeadm の UnversionedKubeletConfigMap 機能が GA になりました。これにより、デフォルトで使用される ConfigMap は、kube-system 名前空間の kubelet-config-x.yy ではなく、kube-system 名前空間の kubelet-config となります。

    • Kubernetes 1.25 以降、kubeadm は node-role.kubernetes.io/master:NoSchedule taint をコントロールプレーンノードに適用しなくなりました。この taint は、kubeadm upgrade apply を実行するときにも削除されます。

    • Kubernetes 1.25 では、Seccomp アノテーション seccomp.security.alpha.kubernetes.io/pod および container.seccomp.security.alpha.kubernetes.io はサポート対象外となりました。代わりに SeccompProfile を使用することを推奨します。詳細については、「Restrict a Container's Syscalls with seccomp」をご参照ください。

    • Kubernetes 1.25 および Kubernetes 1.26 では、kube-controller-manager の一部の起動パラメーターが非推奨となり、削除されました。

      • deleting-pods-qpsdeleting-pods-burst、および register-retry-count は削除されました。

      • experimental-cluster-signing-duration および pod-eviction-timeout は非推奨となり、その機能は cluster-signing-duration に統合されました。

      • Kubernetes 1.27 では、pod-eviction-timeoutenable-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 が非推奨になりました。詳細については、「Deprecated API Migration Guide」をご参照ください。

  • CronJob

    Kubernetes 1.25 以降、CronJob の batch/v1beta1 API バージョンは提供されなくなりました。Kubernetes 1.21 から利用可能な batch/v1 API バージョンを使用してください。

  • EndpointSlice

    Kubernetes 1.25 以降、EndpointSlice の discovery.k8s.io/v1beta1 API バージョンは提供されなくなりました。Kubernetes 1.21 から利用可能な discovery.k8s.io/v1 API バージョンを使用してください。

    discovery.k8s.io/v1 の主な変更点は次のとおりです:

    • 非推奨の topology["kubernetes.io/hostname"] フィールドの代わりに、各 Endpoint で NodeName フィールドが使用されます。

    • 非推奨の topology["kubernetes.io/zone"] フィールドの代わりに、各 Endpoint で Zone フィールドが使用されます。

    • Topology フィールドは deprecatedTopology フィールドに置き換えられ、v1 API バージョンでは書き込み不可です。

  • Event

    Kubernetes 1.25 以降、Event の events.k8s.io/v1beta1 API バージョンは提供されなくなりました。Kubernetes v1.19 から利用可能な events.k8s.io/v1 API バージョンを使用してください。

    events.k8s.io/v1 の主な変更点は次のとおりです:

    • type フィールドは Normal または Warning にのみ設定できます。

    • involvedObject フィールドは regarding に名前が変更されました。

    • 新しい events.k8s.io/v1 Event を作成する場合、actionreasonreportingController、および reportingInstance はすべて必須フィールドです。

    • 非推奨の firstTimestamp フィールドの代わりに eventTime フィールドを使用してください。firstTimestamp フィールドは deprecatedFirstTimestamp に名前が変更され、新しい events.k8s.io/v1 Event オブジェクトでは許可されていません。

    • 非推奨の lastTimestamp フィールドの代わりに series.lastObservedTime フィールドを使用してください。lastTimestamp フィールドは deprecatedLastTimestamp に名前が変更され、新しい events.k8s.io/v1 Event オブジェクトでは許可されていません。

    • 非推奨の count フィールドの代わりに series.count フィールドを使用してください。count フィールドは deprecatedCount に名前が変更され、新しい events.k8s.io/v1 Event オブジェクトでは許可されていません。

    • 非推奨の source.component フィールドの代わりに reportingController フィールドを使用してください。source.component フィールドは deprecatedSource.component に名前が変更され、新しい events.k8s.io/v1 Event オブジェクトでは許可されていません。

    • 非推奨の source.host フィールドの代わりに reportingInstance フィールドを使用してください。source.host フィールドは deprecatedSource.host に名前が変更され、新しい events.k8s.io/v1 Event オブジェクトでは許可されていません。

  • PodDisruptionBudget

    Kubernetes 1.25 以降では、PodDisruptionBudget の policy/v1beta1 API バージョンは利用できなくなりました。Kubernetes 1.21 から利用可能な policy/v1 API バージョンを使用してください。

    policy/v1 の顕著な変更点は、spec.selector を空 ({}) に設定すると、名前空間内のすべての Pod が選択されることです。policy/v1beta1 バージョンでは、空の spec.selector はどの Pod も選択しませんでした。spec.selector が設定されていない場合、どちらの API バージョンでも Pod は選択されません。

  • PodSecurityPolicy

    Kubernetes v1.25 以降、PodSecurityPolicy は policy/v1beta1 API から利用できなくなりました。PodSecurityPolicy アドミッションコントローラーも削除されました。PodSecurityPolicy をPod Security アドミッションまたはサードパーティのアドミッション Webhook に移行してください。

    移行ガイドについては、「Migrate from PodSecurityPolicy to the Built-in PodSecurity Admission Controller」をご参照ください。非推奨に関する詳細については、「PodSecurityPolicy Deprecation: Past, Present, and Future」をご参照ください。

  • RuntimeClass

    Kubernetes v1.25 以降、RuntimeClass の node.k8s.io/v1beta1 API バージョンはサポート対象外となりました。Kubernetes v1.20 から利用可能な node.k8s.io/v1 API バージョンを使用してください。

  • HorizontalPodAutoscaler

    • Kubernetes 1.25 以降では、HorizontalPodAutoscaler の autoscaling/v2beta1 API バージョンは利用できなくなりました。

    • Kubernetes 1.26 以降では、HorizontalPodAutoscaler の autoscaling/v2beta2 API バージョンは利用できなくなりました。Kubernetes 1.23 から利用可能な autoscaling/v2 API バージョンを使用してください。

  • フロー制御リソース

    Kubernetes v1.26 以降、FlowSchema および PriorityLevelConfiguration リソースに対して flowcontrol.apiserver.k8s.io/v1beta1 API バージョンは提供されなくなりました。flowcontrol.apiserver.k8s.io/v1beta2 API は Kubernetes v1.23 から利用可能です。flowcontrol.apiserver.k8s.io/v1beta3 API は Kubernetes v1.26 から利用可能です。

フィーチャーゲート

フィーチャーゲートには通常、アルファ、ベータ、GA の 3 つの段階があります。機能は、アルファ段階ではデフォルトで無効、ベータ段階では通常デフォルトで有効、GA 段階では常にデフォルトで有効になります。GA 段階では、機能を無効にすることはできず、その切り替えは後続のバージョンで削除されます。以下は、主な変更点の一部です。詳細については、「Feature Gates」をご参照ください。

  • Kubernetes 1.25 では、SeccompDefault がベータ版になりました。SeccompDefault の使用方法に関する詳細については、「Restrict a Container's Syscalls with seccomp」をご参照ください。

  • Kubernetes 1.25 では、カスタムリソース定義 (CRD) 検証表現言語がベータ版になり、CustomResourceValidationExpressions がデフォルトで有効になりました。共通表現言語 (CEL) を使用してカスタムリソースを検証する方が、Webhook を使用するよりも便利で効率的です。詳細については、「Validation rules」をご参照ください。

  • Kubernetes 1.25 では、ServerSideFieldValidation フィーチャーゲートがベータ版になり、デフォルトで有効になりました。API サーバーは不明なフィールドの検証をサポートし、これにより将来的に kubectl からこの機能を削除できます。詳細については、「Server-side field validation」をご参照ください。

  • Kubernetes 1.25 では、新しい ContainerCheckpoint アルファ機能が追加され、Kubelet Checkpoint API が有効になります。詳細については、「Kubelet Checkpoint API」をご参照ください。

  • Kubernetes 1.25 では、新しい PodHasNetworkCondition アルファ機能が追加されました。この機能により、kubelet は Pod に PodHasNetwork 条件をマークできるようになります。詳細については、「PodHasNetwork」をご参照ください。

  • Kubernetes 1.25 では、新しい UserNamespacesStatelessPodsSupport アルファ機能が追加され、ステートレス Pod のユーザー名前空間サポートが有効になります。

  • Kubernetes 1.25 では、新しい JobPodFailurePolicy アルファ機能が追加されました。これにより、コンテナの終了コードと Pod の状態に基づいて Job で Pod の障害を処理する方法を設定できます。この機能は Kubernetes 1.26 でベータ版になりました。

  • Kubernetes 1.25 では、新しい MultiCIDRRangeAllocator Alpha 機能が追加されました。これにより、NodeIPAM は複数の ClusterCIDR をサポートできるようになります。コントローラーのサポートを有効にするには、--cidr-allocator-type=MultiCIDRRangeAllocator を使用して kube-controller-manager を設定します。

  • Kubernetes 1.25 では、StatefulSetMinReadySeconds が GA になりました。minReadySeconds フィールドは StatefulSet でデフォルトでサポートされており、無効にすることはできません。

  • Kubernetes 1.25 では、CronJobTimeZone がベータ版になりました。TimeZone フィールドは CronJob でデフォルトで使用でき、無効にすることはできません。

  • Kubernetes 1.25 では、DaemonSetUpdateSurge が GA になりました。MaxSurge フィールドは DaemonSet でデフォルトで使用でき、無効にすることはできません。

  • Kubernetes 1.25 では、IdentifyPodOS が GA になりました。spec.podOS フィールドはデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.25 では、CSIInlineVolume が GA になりました。CSI インラインボリュームのサポートはデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.25 では、EphemeralContainers が GA になりました。エフェメラルコンテナのサポートはデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.25 では、新しい CSINodeExpandSecret 機能が追加されました。これにより、ノードが追加されたときに使用するために、シークレット認証データを CSI ドライバーに渡せるようになります。

  • Kubernetes 1.25 では、CSIMigration が GA になりました。この機能はデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.25 では、CSIMigrationPortworx がベータ版になりました。

  • Kubernetes 1.25 では、ProbeTerminationGracePeriod はベータ版のままですが、そのデフォルト値は true に変更されました。詳細については、「Probe-level terminationGracePeriodSeconds」をご参照ください。

  • Kubernetes 1.26 では、JobTrackingWithFinalizers が GA になりました。デフォルトでは、Job の完了は残りの Pod を数えるのではなく、ファイナライザーを使用して追跡されます。詳細については、「Job tracking with finalizers」をご参照ください。

  • Kubernetes 1.26 では、新しい PDBUnhealthyPodEvictionPolicy アルファ機能が追加されました。これにより、PodDisruptionBudget で異常な Pod の退去ポリシーを指定できるようになります。

  • Kubernetes 1.26 では、動的リソース割り当て API のサポートが有効になりました。これにより、カスタムパラメーターを持ち、Pod のライフサイクルから独立したリソースの管理と使用に対応します。

  • Kubernetes 1.26 では、新しい StatefulSetStartOrdinal アルファ機能が追加されました。これにより、StatefulSet の開始序数を設定できるようになります。

  • Kubernetes 1.26 では、ServiceInternalTrafficPolicy が GA になりました。これにより、internalTrafficPolicy フィールドを使用して Service の内部トラフィックポリシーを設定できます。この機能はデフォルトで有効になっており、無効にすることはできません。詳細については、「Service Traffic Policy」をご参照ください。

  • Kubernetes 1.26 では、新しい ValidatingAdmissionPolicy アルファ機能が追加されました。これは、CEL 式を使用して拡張可能なアドミッションコントローラーを実装するものです。

  • Kubernetes 1.26 では、MixedProtocolLBService が GA になりました。これにより、LoadBalancer タイプの同じ Service インスタンスで異なるプロトコルを使用できます。

  • Kubernetes 1.26 では、EndpointSliceTerminatingCondition が GA になりました。これにより、EndpointSlice の Terminating および Serving 条件フィールドを使用できます。この機能は無効にできません。

  • Kubernetes 1.26 では、APIServerIdentity がベータ版になりました。デフォルトでは、アクティブな各 API サーバーに対して kube-system 名前空間に Lease を作成します。

  • Kubernetes 1.26 では、DelegateFSGroupToCSIDriver が GA になり、無効にすることはできません。

  • Kubernetes 1.26 では、NodeOutOfServiceVolumeDetach がベータ版になり、デフォルトで有効になりました。ノードが node.kubernetes.io/out-of-service taint でサービス停止中とマークされると、この taint を許容しない Pod は強制的に削除されます。そのノードで終了した Pod に対して、ボリュームのデタッチが直ちに実行されます。

  • Kubernetes 1.26 では、ServiceIPStaticSubrange が GA になりました。これにより、Service の ClusterIP 割り当て戦略が ClusterIP 範囲を細分化できるようになります。

  • Kubernetes 1.26 では、CPUManager および DevicePlugins が GA になりました。これらの機能はデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.26 では、新しい ComponentSLIs アルファ機能が追加されました。これにより、kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager などの Kubernetes コンポーネントで /metrics/slis エンドポイントが有効になります。これにより、ヘルスチェックメトリックのスクレイピングが可能になります。

  • Kubernetes 1.26 では、WindowsHostProcessContainers が GA になりました。Windows HostProcess コンテナのサポートはデフォルトで有効になっています。

  • Kubernetes 1.26 では、ExpandedDNSConfig がベータ版になりました。これにより、より多くの DNS 検索ドメインとより長い検索ドメインリストを使用できます。これにはランタイムのサポートが必要です。

  • Kubernetes 1.26 では、LegacyServiceAccountTokenNoAutoGeneration が GA になりました。これにより、Secret に基づくサービスアカウントトークンの自動生成が停止します。この機能はデフォルトで有効になっており、無効にすることはできません。

  • Kubernetes 1.26 では、ProxyTerminatingEndpoints がベータ版になり、デフォルトで有効になりました。これにより、ExternalTrafficPolicyLocal に設定されている場合に、kube-proxy が終了中のエンドポイントを処理できるようになります。

  • Kubernetes 1.26 では、新しい LegacyServiceAccountTokenTracking アルファ機能が追加され、デフォルトでは無効になっています。この機能は、有効期限を示すために、Secret のサービスアカウントトークンに kubernetes.io/legacy-token-last-used というラベルを追加します。

  • Kubernetes 1.26 では、PodDisruptionConditions 機能はベータ版に昇格し、デフォルトで有効になります。中断が原因で Pod が削除されていることを示すために、Pod のステータスに DisruptionTarget 条件を追加できます。Pod の終了理由に関する詳細については、reason フィールドで確認できます。詳細については、「Pod の中断条件」をご参照ください。

Kubernetes 1.26 の機能強化

セキュリティ強化

ノード上の以下の機密性の高い 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

参考