Kubernetes 1.35 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてまとめました。
アップグレード時の注意事項
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-configConfigMap を編集してfailCgroupV1: falseを追加する
(#134744, @neolit123) [SIG Cluster Lifecycle and Node]
項目ごとの変更
非推奨
- なし!
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
Documentation
- なし!
バグ、もしくはリグレッション
-
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アドレスとして解釈されないようになりました。
その他(クリーンアップまたは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]