はじめに
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-config
ConfigMapを編集しバージョンの指定を削除してください。 (#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]