Alibaba Cloud Container Service for Kubernetes (ACK) は、Kubernetes コミュニティの適合性テストに準拠しています。このトピックでは、Kubernetes 1.35 の ACK リリースにおける主な変更点について説明します。これには、コンポーネントのバージョン、主な変更点、機能の更新、非推奨事項が含まれます。
コンポーネントバージョン
次の表に、ACK クラスターのコアコンポーネントのバージョンを示します。
コアコンポーネント | バージョン番号 |
Kubernetes | 1.35.1-aliyun.1, 1.35.2-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.5 |
CoreDNS | v1.12.1.2 |
CSI | |
CNI | Flannel v0.28.0.6 |
Terway and TerwayControlplane v1.15.0 or later |
主な変更点
バージョン 1.35 以降、Kubernetes は cgroup v1 をサポートしなくなりました。cgroup v2 のサポートはバージョン 1.25 で安定版になりました。ノードオペレーティングシステムは cgroup v2 をサポートする必要があります。サポートしていない場合、kubelet の起動に失敗します。
ACK オペレーティングシステムイメージにおける cgroup バージョンのサポートについては、「オペレーティングシステム」をご参照ください。オペレーティングシステムの変更またはアップグレードに関する詳細については、「オペレーティングシステムの変更」をご参照ください。
機能の変更
Service の
trafficDistributionフィールドのPreferSameNodeオプションが一般提供 (GA) になりました。このオプションは、同じノード上のエンドポイントへのトラフィックルーティングを優先し、ローカルノードで利用可能なエンドポイントがない場合にのみ他のノードにフォールバックします。フィーチャーゲート
PreferSameTrafficDistributionはバージョン 1.34 以降、デフォルトで有効になっており、PreferSameNodeとPreferSameZoneの両方をサポートします。元のPreferCloseオプションはPreferSameZoneに名称変更されました。PodObservedGenerationTrackingが安定版 (GA) になりました。Pod のspecが更新されると、その.metadata.generationフィールドが増分します。kubelet は、処理したspecのバージョンを Pod の.status.observedGenerationフィールドに記録します。これにより、コントローラーや Operator は、インプレーススケーリングなどの Pod の変更がノードで有効になったかどうかを正確に判断できます。これは、ステータス更新の遅延によって引き起こされる問題を回避するのに役立ちます。トポロジーマネージャーのポリシーオプションである
max-allowable-numa-nodes(max-allowable-numa-nodes) が安定版 (GA) になりました。これにより、トポロジーマネージャーは 8 つ以上の NUMA ノードを持つサーバー上でアフィニティを正しく計算できるようになります。Downward API が、
topology.kubernetes.io/zoneやtopology.kubernetes.io/regionなどのノードトポロジーラベルを Pod に挿入できるようになりました。StorageVersionMigratorがベータ版になり、デフォルトで無効化されています。この機能は、ストレージバージョン移行機能を外部ツールから Kubernetes の内部実装に移行します。詳細については、「Move Storage Version Migrator in-tree」をご参照ください。MutableCSINodeAllocatableCountがデフォルトで有効になりました。これにより、Container Storage Interface (CSI) ドライバーは、ノード上の割り当て可能なボリューム数を定期的に更新できます。これにより、古い割り当て可能なボリューム情報が原因で、ボリューム容量が不足しているノードに Pod がスケジュールされ、ContainerCreating状態でスタックしてしまう問題を解決できます。Opportunistic batching の導入により、スケジューラは中間のスケジューリング結果をキャッシュできるようになりました。これにより、類似した Pod のスケジューリングスループットが大幅に向上します。
MaxUnavailableStatefulSetがベータ版になり、デフォルトで有効化されています。この機能により、StatefulSet のローリングアップデートポリシーに対してmaxUnavailableフィールドを設定できます。このフィールドは、アップデート中に利用できなくなる Pod の最大数を指定します。Pod Certificates 機能がベータ版になり、デフォルトで無効化されています。この機能により、Pod は kube-apiserver との相互認証のための証明書を生成できます。また、証明書の自動ローテーションもサポートしており、従来の ServiceAccount トークンよりも安全な認証方式を提供します。詳細については、「KEP-4317: Pod Certificates」をご参照ください。
kubectl が KYAML フォーマットをサポートするようになりました。KYAML は、標準的な YAML 解析で見つかった曖昧さやセキュリティの脆弱性に対処するために Kubernetes 向けに設計された YAML のサブセットです。この機能は、
KUBECTL_KYAML=false環境変数を設定することで無効にできます。詳細については、「Introducing KYAML」をご参照ください。HorizontalPodAutoscaler (HPA) の
behaviorフィールドで、許容しきい値の設定がサポートされるようになりました。以前は、スケーリングの決定は 10% の固定されたグローバルな許容値に依存していましたが、要件に応じてこのしきい値を柔軟に設定できるようになりました。User Namespaces 機能がベータ版になりました。この機能により、Pod はホストから隔離されたユーザー名前空間で実行できます。コンテナプロセスは、その名前空間内では root (UID 0) として実行できますが、ホスト上では権限のないゼロ以外のユーザー ID にマッピングされます。これにより、コンテナエスケープによる権限昇格のセキュリティリスクが軽減されます。
ImageVolumeがデフォルトで有効になりました。これにより、Pod でimageタイプのボリュームを使用できます。このタイプのボリュームは、コンテナイメージのコンテンツを Pod 内に読み取り専用ボリュームとしてマウントできます。この機能を使用するには、containerd のバージョンが 2.1 以降である必要があります。KubeletEnsureSecretPulledImagesがベータ版になり、デフォルトで有効化されています。この機能は、imagePullPolicy: IfNotPresentを使用する Pod に対して認証情報のチェックを強制することで、マルチテナントクラスターのセキュリティを向上させます。これにより、認証情報を持つ Pod がプライベートイメージをノードにプルし、同じノード上の認証情報を持たない他の Pod がローカルキャッシュからその機密性の高いイメージにアクセスできてしまうシナリオを防ぎます。ContainerRestartRulesがベータ版になり、デフォルトで有効化されています。この機能により、より詳細なコンテナレベルでの再起動ポリシーの設定が可能になります。コンテナに対してrestartPolicyおよびrestartPolicyRulesフィールドを指定することで、Pod レベルの再起動ポリシーをオーバーライドできます。詳細については、「Individual container restart policy and rules」をご参照ください。CSI ドライバーでは、
spec.serviceAccountTokenInSecretsフィールドをCSIDriverオブジェクトでtrueに設定できるようになりました。これにより、サービスアカウントトークンをvolume contextに直接配置する代わりに、Secret を介してマウントできます。これにより、ログやエラーメッセージで認証情報が誤って公開されるのを防ぐことができます。詳細については、「CSI ドライバーの secrets フィールドによるサービスアカウントトークンのオプトイン」をご参照ください。Deployment オブジェクトに、新しい
terminatingReplicasフィールドが追加されました。このフィールドは、削除タイムスタンプを持つが、まだシステムから完全に削除されていない Pod の数を記録します。バージョン 1.35.2-aliyun.1 では、CVE-2025-61732 および CVE-2025-68121 が修正されています。
非推奨に関する注意事項
バージョン 1.35 以降、kube-proxy の
ipvsモードは非推奨となり、将来のバージョンで削除される予定です。推奨される代替は、v1.33 以降安定版となっている nftables モード です。nftablesモードは比較的新しいため、ACK は新規クラスターに対してデフォルトで引き続きipvsモードを使用します。nftablesモードのサポートは将来のリリースで計画されています。kube-proxy に依存しない Terway Datapath V2 を使用できます。
バージョン 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)」をご参照ください。