はじめに
Kubernetes 1.19 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてにピックアップしました。
主な変更点 (What's New)
- なし。
既知の問題 (Known Issues)
- なし。
重大なアップグレードに関する警告 (Urgent Upgrade Notes)
-
kubeadmは、kubeletのconfig.yamlに書かれるべきである
/var/lib/kubelet/kubeadm-flags.env中にある非推奨の--cgroup-driverを設定しないようになりました。もし、そのフラグを/var/lib/kubelet/kubeadm-flags.envもしくは/etc/default/kubelet(RPMの場合は/etc/sysconfig/kubelet)で設定していた場合、それらを削除しKubeletConfigurationを利用するようにしてください。 (#90513, @SataQiu) [SIG Cluster Lifecycle] -
kubeadmはユーザが指定した
ClusterConfiguration中のetcdのバージョンを考慮し、適切に使用するようになりました。もし、ユーザがClusterConfigurationで指定したバージョンで固定されることを望まない場合はkubeadm-configConfigMapを編集しバージョンの指定を削除してください。 (#89588, @rosti) [SIG Cluster Lifecycle]-
対応を行わない場合、アップデート後にetcdのバージョンが古いまま固定されることになりそうです。
-
-
kubeadmは、systemd-resolved serviceが有効化されていたとしても、ユーザが設定したresolvecConfの値を考慮するようになりました。kubeadmは
/var/lib/kubelet/kubeadm-flags.env中にある--resolv-confを設定しないようになりました。もし、そのフラグを/var/lib/kubelet/kubeadm-flags.envもしくは/etc/default/kubelet(RPMの場合は/etc/sysconfig/kubelet)で設定していた場合、それらを削除しKubeletConfigurationを利用するようにしてください。 (#90394, @SataQiu) [SIG Cluster Lifecycle] -
kubeadm initフェーズ中のkubelet-startがkubeconfigの後に移動しました。このため、kubelet serviceをクラッシュループできないOpenRCのようなinit systemにおいても問題を解決したのちにKubeletConfigurationコンポーネントコンフィグファイル(/var/lib/kubelet/config.yaml)を生成しkubeletが起動できるようになりました。 (#90892, @xphoniex) [SIG Cluster Lifecycle] -
kubeadm config uploadコマンドはGAの非推奨サイクル後に削除されます。もしこのコマンドを利用している場合は代わりにkubeadm init phase upload-configコマンドを利用してください。 (#92610, @rosti) [SIG Cluster Lifecycle]
種々の変更 (Changes by Kind)
廃止予定 (Deprecation)
-
kubeadm config viewコマンドは非推奨になり、将来のバージョンで削除されます。kubeadmの設定ファイルをkubectl get cm -o yaml -n kube-system kubeadm-configを利用して直接取得してください。 (#92740, @SataQiu) [SIG Cluster Lifecycle] -
kubeadm alpha kubelet config enable-dynamicコマンドは非推奨になりました。この機能を引き続き利用したい場合は、k8s.ioの「Dynamic Kubelet Configuration」というガイドを参照してください。 (#92881, @neolit123) [SIG Cluster Lifecycle]-
原文だと "refer" を "defer"とtypoしてる。 -
Node オブジェクトの .spec.configSource.configMapにノードの設定を動的に指定することができる機能のこと。
-
-
kubeadmの
--experimental-kustomizeは非推奨となり--experimental-patchesフラグに置き換わりました。サポートされるフォーマットはkubectl patchと同じです。これらのパッチはディレクトリからファイルとして読み込まれinit/join/upgrade中にkubeadmコンポーネントに適用されます。現在のところ、static podのみにパッチすることができます。 (#92017, @neolit123) -
kubeadm alpha certs renewコマンド中の--use-apiフラグが廃止されました。 (#90143, @neolit123) [SIG Cluster Lifecycle] -
Kubernetesはhyperkubeのイメージをビルドしなくなりました。 (#88676, @dims) [SIG Cluster Lifecycle and Release]
-
前から削除しようと頑張っていましたが、とうとう削除したようです。これに依存してた皆様御愁傷様です…。
-
API の変更 (API Change)
-
kube-proxy: portへのbindが致命的な失敗として扱われるように
--bind-address-hard-failフラグが追加されました。 (#89350, @SataQiu) [SIG Cluster Lifecycle and Network]
機能 (Feature)
-
cgroups v2ノードバリデーションのサポートが追加されました。 (#89901, @neolit123) [SIG Cluster Lifecycle and Node]
-
k8s.io/system-validators という kubeadm preflight checks の機能をパッケージ化したものがあるようです。
-
- kubeadmはユーザが定義したcomponent configと生成されたcomponent configを区別し、configのアップグレードが必要な場合、生成されたcomponent configを再生成するようになりました。 (#86070, @rosti) [SIG Cluster Lifecycle]
-
kubeadm upgrade plan / applyにおいて--configオプションを利用してアップグレードされたcomponent configを手動で適用することができるようになりました。以前の--configオプションの振る舞いは、全ての保存された設定が上書きされていました。 (#91980, @rosti) [SIG Cluster Lifecycle] - kubeadmにおいて、起動の遅いstatic podを保護するためにstartup probeが追加されました。 (#91179, @SataQiu) [SIG Cluster Lifecycle]
-
kubeadm init phase certsで利用される--csr-onlyおよび--csr-dirフラグが非推奨になりました。代わりにkubeadm alpha certs generate-csrコマンドを利用してください。この新しいコマンドは外部のCAで証明書を作成するために利用できる、全てのcontrol-planeコンポーネント用の秘密鍵とCSRを生成します。 (#92183, @wallrj) [SIG Cluster Lifecycle] -
kubeadm upgrade apply中にkube-proxyのConfigMapが存在しなかった場合、kube-proxyはアップグレードするべきでないと見なされます。また、kube-dns/coredns ConfigMapが存在しなかった場合も同様にこれらのDNSサーバーアドオンがアップデートされません。注:この挙動はupgrade applyがphaseをサポートするまでの一時的なワークアラウンドです。phaseがサポートされた後はマニュアルでスキップすることになります。 (#89593, @neolit123) [SIG Cluster Lifecycle] -
kubeadm: control-planeのstatic podのプライオリティクラスが
system-node-criticalに変更されました。 (#90063, @neolit123) [SIG Cluster Lifecycle] -
kubeadm upgrade planがアップグレード前の既知のコンポーネントの設定ファイルの内容をテーブルで表示するようになりました。 (#88124, @rosti) [SIG Cluster Lifecycle]
バグ修正 (Bug or Regression)
-
kubeadm join中のTLSのブートストラップにかかるタイムアウトの時間を5分に増やしました。 (#89735, @rosti) [SIG Cluster Lifecycle] -
kubeadm joinにおけるステータス更新時にリトライを行うようにしました。 (#91952, @xlgao-zju) [SIG Cluster Lifecycle] -
kubeadm: kube-controller-managerおよびkube-schedulerにおいてhttpでの待受を無効化するために、非推奨な
--port=0フラグを追加しました。このフラグを利用しない場合、--addressフラグで制御されるデフォルトのインタフェースにおいて保護されない通信で/metricsなどが公開されます。この挙動を変更したい場合はkubeadmのそれぞれのコンポーネントにおけるextraArgsを利用して--portフラグを上書きしてください。 (#92720, @neolit123) [SIG Cluster Lifecycle] -
kubeadm join中に、クラスターにすでにetcdのメンバーが存在する場合新たに追加しないように修正しました。 (#92118, @neolit123) [SIG Cluster Lifecycle] -
kubeadm reset中において、クラスタにstackedなetcdのメンバーが残っていた場合、そのメンバーを削除せず、ローカルのetcdのストレージをクリーンナップするだけにしました。 (#91145, @tnqn) [SIG Cluster Lifecycle] -
kubeadm joinにおいて、クラスター中に同名のノードが存在するかチェック時に、NodeReadyコンディションが正しく検証されるようになりました。 (#89602, @kvaps) [SIG Cluster Lifecycle] -
kubeadmのupgradeフェーズ時に、--image-pull-timeoutフラグが反映されるように修正しました。 (#90328, @SataQiu) [SIG Cluster Lifecycle] - kubeadmで1.18.xへのアップグレード時にRBACがないことによりノードがクラスターにjoinできなかった問題が修正されました。 (#89537, @neolit123) [SIG Cluster Lifecycle]
その他 (Other (Cleanup or Flake))
- kubeadmはIPv6DualStackのFeatureGateの有効化を、コマンドラインではなく、kubelet component configを利用するようになりました。 (#90840, @rosti) [SIG Cluster Lifecycle]
-
kubeadm upgrade apply時に、control-planeのイメージをDaemonSetを利用して事前にpullしないようになりました。それぞれのノードにおける事前チェック時に必要なイメージをpullするようになります。それに伴いkubeadm upgrade apply時の--image-pull-timeoutフラグは非推奨になり、将来削除されます。 (#90788, @xlgao-zju) [SIG Cluster Lifecycle] -
kubeadmはkube-apiserverの
/healthzを利用する代わりに、/livezおよび/readyzを利用するようになりました。 (#90970, @johscheuer) [SIG Cluster Lifecycle]