Alibaba Cloud Container Service for Kubernetes は、コミュニティ標準に準拠した認定 Kubernetes サービスです。このドキュメントでは、ACK における Kubernetes 1.35 リリースの主な変更点について説明します。具体的には、アップグレード時の考慮事項、破壊的変更、新機能、非推奨機能および API、フィーチャーゲートなどが含まれます。
コンポーネントのバージョン
次の表は、ACK クラスター内のコアコンポーネントのバージョンを示しています。
コアコンポーネント | バージョン |
Kubernetes | 1.35.1-aliyun.1、1.35.2-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.6 |
CoreDNS | v1.12.1.2 |
CSI | |
CNI | Flannel v0.28.0.6 |
Terway および TerwayControlplane v1.15.0 以降 |
破壊的変更
バージョン 1.35 以降、Kubernetes は cgroup v1 をサポートしなくなりました。cgroup v2 のサポートはバージョン 1.25 で Stable となりました。cgroup v2 をサポートするようにノードのオペレーティングシステムをアップグレードする必要があります。アップグレードしない場合、kubelet が起動できなくなります。
ACK OS イメージにおける cgroup バージョンのサポート状況については、「オペレーティングシステム」をご参照ください。オペレーティングシステムの変更またはアップグレード手順については、「オペレーティングシステムの変更」をご参照ください。
機能更新
Service の
trafficDistributionフィールドにおけるPreferSameNodeオプションが General Availability (GA) になりました。このオプションは、トラフィックを同じノード上のエンドポイントに優先的にルーティングし、ローカルエンドポイントが利用できない場合にのみ他のノードにフォールバックします。PreferSameTrafficDistributionフィーチャーゲートはバージョン 1.34 からデフォルトで有効になっており、PreferSameNodeとPreferSameZoneの両方をサポートしています。以前のPreferCloseオプションはPreferSameZoneに名称変更されました。PodObservedGenerationTracking機能が Stable になりました。Pod のspecが更新されると、その.metadata.generationが増分されます。その後、kubelet は処理済みのspecバージョンを Pod の.status.observedGenerationフィールドに記録します。これにより、コントローラーやオペレーターは、インプレースサイズ変更などの Pod 変更がノード上で実際に反映されたかどうかを正確に判断できるようになり、ステータス更新の遅延によって引き起こされる問題を防止できます。ノードトポロジーマネージャーのポリシーオプションである
max-allowable-numa-nodes(max-allowable-numa-nodes) が Stable になりました。これにより、トポロジーマネージャーは 8 個を超える NUMA ノードを持つサーバー上で正しくアフィニティを計算できるようになります。Downward API がノードトポロジーラベル(例:
topology.kubernetes.io/zoneおよびtopology.kubernetes.io/region)を Pod に注入することをサポートするようになりました。StorageVersionMigrator機能が Beta に昇格し、デフォルトでは無効になっています。この機能により、ストレージバージョン移行機能が外部ツールから Kubernetes コアコードベースに統合されます。詳細については、「Move Storage Version Migrator in-tree」をご参照ください。MutableCSINodeAllocatableCount機能がデフォルトで有効になりました。これにより、CSI ドライバーがノード上の割り当て可能なボリューム数を定期的に更新できるようになります。これにより、古いボリューム容量情報が原因で、十分なボリューム容量を持たないノードに Pod がスケジュールされ、Pod がContainerCreating状態で停止してしまう問題を解決できます。opportunistic batching を通じて、スケジューラーが中間的なスケジューリング結果をキャッシュできるようになり、類似した Pod のスケジューリングスループットが大幅に向上します。
MaxUnavailableStatefulSet機能が Beta に昇格し、デフォルトで有効になっています。この機能により、StatefulSet のローリングアップデート戦略においてmaxUnavailableフィールドを設定し、アップデート中に許容される最大の利用不可 Pod 数を指定できます。Pod 証明書が Beta に昇格し、デフォルトでは無効になっています。この機能により、Pod 用の証明書を生成して kube-apiserver との相互 TLS 認証に使用できるようになります。また、自動証明書ローテーションもサポートしており、従来のサービスアカウントトークンよりも安全な認証方式を提供します。詳細については、「KEP-4317: Pod Certificates」をご参照ください。
Kubectl が KYAML フォーマットをサポートするようになりました。KYAML は Kubernetes 向けに設計された YAML のサブセットであり、標準 YAML 解析における特定の曖昧さやセキュリティ上の問題を解消します。この機能は、環境変数
KUBECTL_KYAML=falseを設定することで無効化できます。詳細については、「Introducing KYAML」をご参照ください。HorizontalPodAutoscaler (HPA) の
behaviorフィールドが、設定可能な許容しきい値をサポートするようになりました。以前は、スケーリングの判断に固定されたグローバルな 10% の許容範囲が使用されていましたが、現在はこれを設定可能になっています。User Namespaces が Beta に昇格しました。この機能により、Pod をホストから隔離されたユーザーネームスペース内で実行できるようになります。コンテナプロセスはネームスペース内では root (UID 0) として実行できますが、ホスト上では非特権かつゼロ以外のユーザー ID にマッピングされます。これにより、コンテナエスケープによる権限昇格のセキュリティリスクが軽減されます。
ImageVolume機能がデフォルトで有効になり、Pod 内でimageボリュームを使用できるようになりました。このタイプのボリュームは、コンテナイメージの内容を読み取り専用ボリュームとして Pod にマウントできます。この機能を使用するには、containerd のバージョンが 2.1 以降である必要があります。KubeletEnsureSecretPulledImages機能が Beta に昇格し、デフォルトで有効になっています。この機能により、マルチテナントクラスターにおけるセキュリティが強化され、imagePullPolicy: IfNotPresentを使用する Pod に対して認証情報のチェックが強制されます。これにより、認証済みの Pod がすでに同一ノードにイメージをプルしていたとしても、認証されていない Pod がローカルキャッシュから機密イメージにアクセスするのを防ぎます。ContainerRestartRules機能が Beta に昇格し、デフォルトで有効になっています。これにより、コンテナレベルでの再起動ポリシー構成がより細かく制御できるようになります。個々のコンテナに対してrestartPolicyおよびrestartPolicyRulesを指定することで、Pod レベルの再起動ポリシーを上書きできます。詳細については、「個別コンテナの再起動ポリシーおよびルール」をご参照ください。CSI ドライバーは、
CSIDriverオブジェクト内でspec.serviceAccountTokenInSecretsをtrueに設定することで、サービスアカウントトークンをvolume contextに直接配置する代わりに Secrets を介してマウントできるようになります。これにより、認証情報がログやエラーメッセージに誤って公開されるのを防ぐことができます。詳細については、「CSI driver opt-in for service account tokens via secrets field」をご参照ください。デプロイメントに新しい
terminatingReplicasフィールドが追加されました。このフィールドは、削除タイムスタンプが設定されているが、まだシステムから完全に削除されていない Pod の数を記録します。バージョン 1.35.2-aliyun.1 には、CVE-2025-61732 および CVE-2025-68121 の修正が含まれています。
非推奨事項
バージョン 1.35 から、kube-proxy の
ipvsモードが非推奨となり、今後のリリースで削除される予定です。公式に推奨されている代替手段は、v1.33 から Stable となっている nftables モード です。nftablesモードは比較的新しいため、ACK では新規クラスターにおいて引き続きipvsモードをデフォルトで使用しています。nftablesモードのサポートは今後のリリースで予定されています。Terway Datapath V2 の使用を推奨します。これは kube-proxy に依存しません。
バージョン 1.35 は containerd 1.x をサポートする最後のリリースです。Kubernetes 1.36 以降にアップグレードする前に、containerd を 2.x バージョンにアップグレードする必要があります。ACK クラスターはバージョン 1.33 以降、デフォルトで containerd 2.x を使用しています。詳細については、「containerd 2.1 の概要」をご参照ください。
参照
Kubernetes 1.35 の完全なチェンジログについては、「CHANGELOG-1.35」および「Kubernetes v1.35: Timbernetes (The World Tree Release)」をご参照ください。