Kubernetes 1.32 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてまとめました。
ピックアップ
- なし!
アップグレード時の注意事項
-
kubeadmに関連する注意事項は特になし
項目ごとの変更
非推奨
-
kubeadmに関連する注意事項は特になし
APIの変更
-
kubeadmに関連する注意事項は特になし
機能
-
kubeadm upgrade applyがサブコマンドをサポートしました。phaseサブコマンドを使うことでkubeadm upgrade apply phase <phase-name>のように特定のフェーズを実行することができます。また、kubeadm upgrade apply --skip-phases <phase-names>を使うことで特定のフェーズをスキップすることもできるようになりました。(#126032, @SataQiu) [SIG Cluster Lifecycle]
以下が実行可能なフェーズです。
Available Commands:
addon Upgrade the default kubeadm addons
bootstrap-token Configures bootstrap token and cluster-info RBAC rules
control-plane Upgrade the control plane
kubelet-config Upgrade the kubelet configuration for this node
post-upgrade Run post upgrade tasks
preflight Run preflight checks before upgrade
upload-config Upload the kubeadm and kubelet configurations to ConfigMaps
フェーズに etcd が無いように見えますが、control-plane のフラグに--etcd-upgrade があり、デフォルトで true になっているようです。
-
kubeadm upgrade nodeでaddonとpost-upgradeフェーズがサポートされました。kubeadm upgrade node phase addonを実行することでアドオンのアップグレードを行うことができます。また、kubeadm upgrade node --skip-phases addonを実行することでaddonのアップグレードをスキップすることができます。現在のところpost-upgradeフェーズは何も行わず、リリース特有のアップグレード後のタスクに利用されています。(#127242, @SataQiu) [SIG Cluster Lifecycle] -
kubeadm:certificateValidityPeriodの値がcaCertificateValidityPeriod` の値よりも大きかった場合に警告が出るようになりました。(#126538, @SataQiu) [SIG Cluster Lifecycle] -
kubeadm:NodeLocalCRISocketフィーチャーゲートを追加しました。このフィーチャーゲートが有効化されると、kubeadmは各ノードのkubelet設定のcontainerRuntimeEndpointフィールドをカスタマイズするために、/var/lib/kubelet/instance-config.yamlファイルを生成します。また、Nodeオブジェクトにアノテーションとして同じCRIソケットを書き込むことはなくなります。(#128031, @HirazawaUi) [SIG Cluster Lifecycle]
Nodeのアノテーションに保存していた CRI ソケットの情報を /var/lib/kubelet/instance-config.yaml に書き出すことにしたようです。
-
kubeadm:kubeadm init phase addonのサブフェーズにおいて、--configフラグと特別なフラグ--print-manifestを混在して使用することが可能になりました。(#126740, @neolit123) [SIG Cluster Lifecycle] -
kubeadm: フィーチャーゲートWaitForAllControlPlaneComponentsが有効な場合、コントロールプレーンコンポーネントに対して--bind-addressまたは--advertise-addressと--secure-portを考慮するようになりました。kube-apiserverとkube-schedulerには/livezを使用しますが、kube-controller-managerは/livezをサポートするまで引き続き/healthzを使用します。(#128474, @neolit123) [SIG Cluster Lifecycle]
kubeadm init の終了時に、すべてのコントロールプレーンコンポーネントを待つ際、今までは 127.0.0.1 を利用してステータスをチェックしていたようです。
-
kubeadm:kubeadm init phaseのようなサブコマンドを必要とするコマンドに未知のサブコマンド名が渡された場合、エラーを返すようになりました。また、kubeadm init phaseや他のサブコマンドを持つコマンドがサブコマンド名なしで呼び出された場合、利用可能なコマンドを表示し、併せてエラーを返すようになりました。(#127096, @neolit123) [SIG Cluster Lifecycle] -
kubeadm: フィーチャーゲートEtcdLearnerModeがGAに昇格しました。kubeadmによってデプロイされたetcdのLearnerモードは、デフォルトで有効になります。(#126374, @pacoxu) [SIG Cluster Lifecycle]
- See: etcd の Learner とは?
ドキュメント
-
kubeadmに関連する注意事項は特になし
バグ、もしくはリグレッション
-
kubeadm:kubeadmが管理するCoreDNSのCorefileにおいて、cacheプラグインのパラメータとしてdisable successとdisable denialが追加されました。これは、CoreDNSのキャッシュ更新中に矛盾する応答を防ぐためです。(#128359, @matteriben) [SIG Cluster Lifecycle]
.cluster.local に対して、キャッシングを無効にする設定を追加したようです。CoreDNS の cache プラグインは kubernetes プラグインより優先されるため古い情報を返してしまう問題があったようです。
-
kubeadm: アップグレードの事前チェックのためのCreateJobから作成されたPodが、タイムアウト後に適切に終了されるようになりました。(#127333, @yuyabee) [SIG Cluster Lifecycle] -
kubeadm:etcdメンバーを削除する際に、誤ったメンバーリストが表示される問題が修正されました。 (#127650, @SataQiu)
表示されるメンバーのリストは、特に何かに利用されているわけでは無いので問題は現状無いとのこと。
-
kubeadm:kubeadm joinで新しいコントロールプレーンノードを追加する際、指定されたメンバーURLがすでにメンバーリストに存在しない場合にのみetcdメンバーの追加が行われるようになりました。同様に、kubeadm resetの際も、etcdメンバーのIDが存在する場合にのみそのメンバーを削除するようになりました。(#127491, @SataQiu) [SIG Cluster Lifecycle]
その他(クリーンアップまたはフレーク)
-
kubeadm: v1.31以降、kubeadmはcrictlに依存しなくなったため、crictlバイナリが存在しない場合に警告を表示しないようになりました。(#126596, @saschagrunert) [SIG Cluster Lifecycle] -
kubeadm:init、join、upgrade、resetサブコマンド実行中のAPIクライアントのドライラン時の詳細度が増加しました。また、偽のcluster-info ConfigMapを利用することで、既存のクラスタがない場合でもkubeadm joinのドライランを可能にしました。(#126776, @neolit123) -
kubeadm:kubeadmが管理するPodSpecに書き込まれる追加の環境変数が、環境変数名によってアルファベット順に並べられるようになりました。 (#126743, @neolit123) [SIG Cluster Lifecycle] -
kubeadm:init kubelet-finalizeの非推奨のサブフェーズであるexperimental-cert-rotationが削除され、代わりにenable-client-cert-rotationが使用されるようになりました。 (#126913, @pacoxu) [SIG Cluster Lifecycle] -
kubeadm:kubeadmの事前チェックからsocatとebtablesが削除されました。(#127151, @saschagrunert) [SIG Cluster Lifecycle] -
kubeadm:conntrackバイナリの存在を確認する事前チェックが削除されました。これは、バージョン1.32以降ではconntrackがkube-proxyの依存関係ではなくなったためです。 (#126953, @aroradaman)
上記の socat と ebtables はサポートされている Kubernetes では不要になったため、チェックが完全に削除されましたが、conntrack に関してはバージョン 1.32 未満の kube-proxy が必要としているためバージョンチェック後に事前チェックが実行されています。
-
kubeadm:kubeadm upgrade applyコマンドの非推奨で機能しないフラグ--feature-gates、およびkubeadm upgrade diffコマンドの--api-server-manifest、--controller-manager-manifest、--scheduler-manifestフラグが削除されました。(#127123, @neolit123) [SIG Cluster Lifecycle] -
kubeadm: 非推奨のフラグ--experimental-outputが削除されました。代わりに同じ目的を果たす--outputフラグを使用してください。影響を受けるコマンドは以下の通りです:kubeadm config images list、kubeadm token list、kubeadm upgrade plan、kubeadm certs check-expiration。(#126914, @carlory) [SIG Cluster Lifecycle] -
kubeadm:kube-schedulerの静的Podが、起動プローブとリブネスプローブに/livezエンドポイントを、レディネスプローブに/readyzエンドポイントを使用するように変更されました。以前は、すべてのプローブに/healthzが使用されていましたが、このコンポーネントにおいてはこの動作は非推奨とされています。(#126945, @liangyuanpeng) [SIG Cluster Lifecycle]