Kubernetes 1.33
Kubernetes 1.33 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてまとめました。
ピックアップ
- なし!
アップグレード時の注意事項
-
kubeadmに関連する注意事項は特になし
項目ごとの変更
非推奨
-
kubeadmに関連する注意事項は特になし
APIの変更
-
kubeadmに関連する注意事項は特になし
機能
-
kubeadm:kubeadm upgrade planコマンドが--etcd-upgradeフラグをサポートするようになり、etcdのアップグレードの計画を表示するかどうかを制御できるようになりました。また、UpgradeConfigurationのv1beta4に.Plan.EtcdUpgradeフィールドが追加されました。(#130023, @SataQiu) -
kubeadm: Linuxノードではcpコマンド、Windowsノードではxcopyコマンドの存在を確認するプリフライトチェックが追加されました。これらのバイナリはkubeadmが正常に動作するために必要です。 (#130045, @carlory) -
kubeadm:kubeletが失敗した場合やコントロールプレーンの待機に失敗した場合に、一貫性のあるエラーメッセージを提供するようkubeadm initとkubeadm joinが改善されました。 (#130040, @HirazawaUi)
コントロールプレーンの待機に失敗した場合のエラーメッセージが init 時と join 時に異なるフォーマットで出力されていたものを修正したようです。
-
kubeadm: フィーチャーフラグControlPlaneKubeletLocalModeがベータ版に昇格しました。デフォルトでは、kubeadm initでクラスターを作成する場合やkubeadm joinでコントロールプレーンノードを追加する場合、kubeadmはkubelet用にローカルのkube-apiserverエンドポイントを使用するようになりました。この機能フラグは、kubeadm init phase、kubeconfig kubeletフェーズにも影響します。また、--control-plane-endpointフラグは生成されるkubeconfigのServerフィールドに影響しなくなりますが、代わりに--apiserver-advertise-addressフラグを同じ目的で使用できるようになりました。 (#129956, @chrischdi)
そもそものこの機能のモチベーションは、Control PlaneノードにおけるKubeletのLB経由のAPIサーバーへのアクセスがアップグレード時に "kubelet must not be newer than kube-apiserver." というバージョンスキューポリシーに引っかかってしまうという問題を解決するためのもののようです。
-
kubeadm:WaitForAllControlPlaneComponentsのフィーチャーフラグがベータ版に昇格しました。コントロールプレーンコンポーネントの健全性をチェックする際、各コンポーネントのスタティックPodのマニフェストで引数として定義されているアドレスとポートが使用されるようになりました。 (#129620, @neolit123) [SIG Cluster Lifecycle] [sig/cluster-lifecycle] -
kubeadm:NodeLocalCRISocket機能フラグが有効になっている場合、kubeadm upgrade実行時に対象ノードからkubeadm.alpha.kubernetes.io/cri-socketアノテーションが削除されるようになりました。 (#129279, @HirazawaUi) -
kubeadm:NodeLocalCRISocket機能フラグが有効になっている場合、kubeadm upgrade実行時に/var/lib/kubelet/kubeadm-flags.envファイルから--container-runtime-endpointフラグが削除されるようになりました。 (#129278, @HirazawaUi)
上記の #129279 と合わせて、CRIのエンドポイントの情報が /var/lib/kubelet/kubeadm-flags.env や、kubeadm.alpha.kubernetes.io/cri-socket アノテーション から、kubeadm の設定ファイルと /var/lib/kubelet/instance-config.yaml になったようです。
-
kubeadm: Linuxノードでのnsenterに対するプリフライトチェックが削除されました。また、Linuxノードでkubeletがブロックデバイスを開いた状態に保つために必要となるlosetupに対するプリフライトチェックが追加されました。(#129450, @carlory) -
kubeadm: 1.32 で GA となったEtcdLearnerModeのフィーチャーゲートが削除されました。(#129589, @neolit123)
ドキュメント
-
kubeadm: 手動クリーンアップのためのkubeadm resetのメッセージが改善され、https://k8s.io/docs/reference/setup-tools/kubeadm/kubeadm-reset/ へのリファレンスが追加されました。 (#129644, @neolit123)
クリーンアップ時に、kubeadm reset では消されないファイルや設定などのクリーンアップ方法がドキュメントに記載されたようです。
例:
-
/etc/cni/net.d配下にある CNI の設定ファイル。 -
kube-proxyが設定したiptableのルール。
バグ、もしくはリグレッション
-
kubeadm:kubeadm initのフェーズ実行時に、--kubeconfigに渡されたファイルが複数回読み込まれるのを回避するように改善されました。 (#129006, @kokes) -
kubeadm: CRIからのサンドボックスイメージにエラーがある場合に、イメージがプルされないバグを修正しました。 (#129594, @neolit123) -
kubeadm:kubeadm upgrade nodeサブコマンドがUpgradeConfiguration内のnode.skipPhasesを無視しているバグを修正しました。(#129452, @SataQiu) -
kubeadm: 設定ファイル中にUpgradeConfigurationが存在しなかった場合にパニックが発生するバグを修正しました。(#130202, @SataQiu) -
kubeadm: 設定ファイルv1beta4におけるTimeouts.EtcdAPICallフィールドがetcdクライアントの操作で利用されず、常にデフォルトのタイムアウト(2分)が使用されるバグを修正しました。 (#129859, @neolit123) -
kubeadm:ClusterConfigurationでアドオンが無効化されている場合、アップグレード時にそのアドオンをスキップするようになりました。 (#129418, @neolit123)
kube-proxy を無効化して kube-router を使っていたユーザーがv1.31からv1.32にアップデートした際に、無効化してたはずのkube-proxy が復活してサービス停止になってしまったらしい。ヒドイ。
-
kubeadm:--anonymous-auth=falseが設定され、WaitForAllControlPlaneComponentsフィーチャーゲートが有効になっている場合でもkube-apiserverのヘルスチェックが可能になるようにしました。 (#131036, @neolit123) -
kubeadm:kubeadm upgradeでカーネルバージョンとOSバージョンの事前チェックを実行するようになりました。 (#129401, @pacoxu) -
kubeadm: ログ内でYAML/JSONへの直接的な言及ではなく、一般的な用語を使用するようになりました (#130345, @HirazawaUi) -
kubeadm: Linux ノードにおけるip、iptables、ethtool、tcに対するプリフライトチェックが削除されました。kubeletとkube-proxyは、iptablesの使用が必要な場合には引き続きエラーを報告します。ip、ethtool、tcツールはkubeletで過去に使用されていましたが、現在では必要なくなりました。 (#129131, @pacoxu) -
kubeadm: Linux ノードにおけるtouchに対するプリフライトチェックが削除されました。 (#129317, @carlory)