0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes 1.35: SIG Cluster Lifecycle の変更内容

0
Last updated at Posted at 2026-01-27

Kubernetes 1.35 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてまとめました。

:warning: アップグレード時の注意事項

ACTION REQUIRED

vendor:

k8s.io/system-validators が v1.12.1 に更新されました。この変更により、ホスト上で cgroups v1 が検出され、かつ指定された KubeletVersion が v1.35 以降の場合、従来は 警告(warning) だったものが エラー(error)として扱われる ようになりました。

kubeadm:

kubeadm v1.35 から k8s.io/system-validators v1.12.1 を使用するようになりました。
これにより、kubeadm init/join/upgrade コマンド実行時に実施される SystemVerification プリフライトチェック で挙動が変わります。

  • kubelet のバージョンが v1.35 以降:
    • cgroup v1 が検出された場合、プリフライトチェックは エラーを返して処理を停止
  • kubelet のバージョンが v1.35 未満:
    • cgroup v1 が検出された場合、従来どおり 警告のみが表示

kubeadm と kubelet のバージョン v1.35 以降も cgroup v1 を利用したい場合は、以下の対応を行う必要があります:

  • kubeadm 実行時に SystemVerification プリフライトチェックのエラーをignore する
  • アップグレード前に kube-system/kubelet-config ConfigMap を編集して failCgroupV1: false を追加する

(#134744, @neolit123) [SIG Cluster Lifecycle and Node]

:dizzy: 項目ごとの変更

:do_not_litter: 非推奨

  • なし!

:construction_site: APIの変更

  • kubeadm: WaitForAllControlPlaneComponents 機能に関連するリトライ処理中、詳細度レベル 5(verbosity level 5) でエラー内容を出力するようになりました。 (#134433, @neolit123)

  • kubeadm: v1beta4 において、etcd との通信に使用する HTTP エンドポイントを設定するための HTTPEndpoints フィールドが ClusterConfiguration.Etcd.ExternalEtcd に追加されました。これにより、HTTP トラフィック(例: /metrics、/health)を gRPC トラフィックから分離でき、アクセス制御の改善が可能になります。この挙動は etcd の --listen-client-http-urls オプションと同等です。 HTTPEndpoints が設定されていない場合は、Endpoints フィールドが HTTP / gRPC の両方のトラフィックを扱います。(#134890, @SataQiu)

この修正は etcd の --listen-client-http-urls を有効化して外部の etcd を使っているユーザーが報告した問題で、このフラグ自体は以下のコメントにあるように golang の net/http2 を利用して HTTP /gRPC を同一のサーバーで動かしている際に性能悪化が発生する問題に対応するため導入されました。

しかし、現在の golang net/http2 では HTTP/2 の優先度付き書き込みスケジューラー(priority write scheduler)に起因する性能問題は解決しているため、性能問題を気にしてエンドポイントを分ける必要はないようです。

  • kubeadm: kubeadm 固有のフィーチャーゲートである ControlPlaneKubeletLocalMode が GA になり、デフォルトで有効になりました。これを無効化するには、/etc/kubernetes/kubelet.conf にある server フィールドをパッチする必要があります。また、kubeadm join phase control-plane-join のサブフェーズである etcd を 非推奨としました。このサブフェーズは現在は非表示となっており、同一の機能を持つ etcd-join というサブフェーズに置き換えられています。etcd サブフェーズは将来のリリースで削除される予定です。さらに、kubeadm join のサブフェーズ kubelet-wait-bootstrap は実験的(experimental)ではなくなり、常に実行されるようになります。(#134106, @neolit123)

  • Kubernetes は、https://go.dev/blog/container-aware-gomaxprocs を含む Go 言語バージョン 1.25 を使用するようになりました。(#134120, @BenTheElder)

GOMAXPROCS の値はコンテナ内でもホスト全体の論理 CPU 数を基に設定されていましたが、コンテナのCPUリミットの値を利用して設定されるようになりました。
ちなみに、CPUリミットを 1.5 といった値で指定すると整数に切り上げられます。(この場合だと 2

:book: Documentation

  • なし!

:bug: バグ、もしくはリグレッション

  • kubeadm: cluster-info ConfigMap 内に、有効な current context を含まない不正な kubeconfig が存在する場合に、パニックが発生するのを防ぐため、不足していた cluster-info のコンテキスト検証が追加されました。(#134715, @neolit123)
  • kubeadm: apiserver の待機処理において、コントロールプレーンのエンドポイントではなく、ローカルの API サーバーエンドポイントへ直接到達するローカルクライアントを使用するようにしました。(#134265, @neolit123)
  • kubeadm: kubelet 設定ファイルを書き込む際の upgrade フェーズにおいて、 KUBEADM_UPGRADE_DRYRUN_DIR が考慮されていなかった不具合を修正しました。 (#134007, @carlory)
  • kubeadm: v1beta4 がデフォルトとなっている新しい kubeadm バージョンにおいて、 v1beta3 の ClusterConfiguration.APIServer.TimeoutForControlPlane が無視されていた問題を修正しました。(#133513, @tom1299)
  • kubeadm: kubeadm upgrade node の実行中に、対象ノードのノード登録情報が正しく取得されず、ノード名がホスト名と異なる場合にノード名が誤ったものになる可能性があった不具合を修正しました。(#134319, @neolit123)
  • kubeadm: IPv6 環境において、ホスト名の構築が失敗する可能性のあったプリフライトチェックの不具合を修正しました。(#134588, @liggitt)

go 1.25.2/1.24.8 にて、IPv6のアドレスの扱い方がよりRFCに厳格になり、今までIPv6アドレスっぽいが実はホスト名だったり不正な文字列だったりした値がIPv6アドレスとして解釈されないようになりました。

:goat: その他(クリーンアップまたはFlake)

  • より適切なハッシュアルゴリズムを採用するため、md5 アルゴリズムを廃止し、将来的な使用も防止しました。 (#133511, @BenTheElder) [SIG Apps, Architecture, CLI, Cluster Lifecycle, Network, Node, Security, Storage and Testing]
  • kubeadm: サポート対象のコントロールプレーンバージョン v1.31、v1.32、v1.33 向けに、サポートされる etcd バージョンを v3.5.23 に更新しました。 (#134692, @joshjms) [SIG Cluster Lifecycle and Etcd]
  • kubeadm: kubelet に対して --pod-infra-container-image フラグを適用する処理を停止しました。このフラグは非推奨となっており、ロジックが CRI(Container Runtime Interface)に移行されたため、kubelet においてはもはや用途がありません。アップグレード時に、kubeadm はファイル /var/lib/kubelet/kubeadm-flags.env から当該フラグの削除を試みます。 (#133778, @carlory) [SIG Cloud Provider and Cluster Lifecycle]
  • etcd を v3.6.5 に更新しました。 (#134251, @joshjms) [SIG API Machinery, Cloud Provider, Cluster Lifecycle, Etcd and Testing]
  • etcd クライアントライブラリを v3.6.5 に更新しました。 (#134780, @joshjms) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling and Storage]
  • CoreDNS を v1.12.4 にアップグレードしました。 (#133968, @yashsingh74) [SIG Cloud Provider and Cluster Lifecycle]
  • CoreDNS を v1.12.3 にアップグレードしました。 (#132288, @thevilledev) [SIG Cloud Provider and Cluster Lifecycle]
  • kubeadm: v1.34 で GA に昇格し、デフォルトで有効に固定された WaitForAllControlPlaneComponents フィーチャーゲートを削除しました。 (#134781, @neolit123)
  • kubeadm: コントロールプレーンバージョン v1.32、v1.33、v1.34 向けに、サポートされる etcd バージョンを v3.5.24 に更新しました。 (#134779, @joshjms) [SIG API Machinery, Cloud Provider, Cluster Lifecycle, Etcd and Testing]
  • etcd: etcd を v3.6.6 に更新しました。 (#135271, @bzsuni) [SIG API Machinery, Cloud Provider, Cluster Lifecycle, Etcd and Testing]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?