Kubernetes 1.23 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてにピックアップしました。
主な変更点 (What's New)
- なし。
重大なアップグレードに関する警告 (Urgent Upgrade Notes)
-
kubeadm:
init|join|upgrade
コマンドにおける非推奨の--experimental-patches
を削除しました。--patches
フラグは--config
フラグと共に利用することはできません。ノードにパッチを適用するkubeadmの設定には、{Init|Join}Configuration.patches
を利用してください。 (#104065, @pacoxu)
種々の変更 (Changes by Kind)
廃止予定 (Deprecation)
-
kubeadm: 新しい
output/v1alpha2
APIを追加しました。これはoutput/v1alpha1
APIと同じものですが、kubeadm/v1beta2
における内部の依存関係を解決するためのものです。output/v1alpha1
APIは非推奨となり将来のリリースで削除予定です。 (#105295, @neolit123)-
output/v1alphaX
API とは、kubeadmの出力結果をjsonやyaml、gotemplateで出力するためのAPIです、詳しくは KEPを参照してください。
-
-
kubeadm: デフォルトで無効化されている、kubeadm特有の Alpha Featurea Gateである
UnversionedKubeletConfigMap
を追加しました。この機能を有効化してすると、kubeadmはKubeletConfiguration
を保存するConfigMapについて、新しいフォーマットの名前を使い始めます。古いConfigMapの名前には"kube-system/kubelet-config-1.22"のようにKuberneteのバージョンが含まれていましたが、新しいフォーマットは"kube-system/kubelet-configのようにバージョンが含まれていません。古いフォーマットの名前は非推奨になり、この名前のフォーマットがGAになった際に削除されます。ConfigMapを書く際にはkubeadmは
UnversionedKubeletConfigMap`の値を考慮し、読込の際は新しいフォーマットの利用を試み、必要な場合は古いフォーマットにフォールバックします。 (#105741, @neolit123) [SIG Cluster Lifecycle and Testing] -
kubeadm:
kubeadm reset
においてupdate-cluster-status
における非推奨のNO-OPフェーズを削除しました。 (#105888, @neolit123)- kubeadm-config中からClusterStatusを削除する際のクリーンナップのようです。
API の変更 (API Change)
- なし。
機能 (Feature)
-
kubeadm:
kubeadm join
において、ドライランがサポートされました。この新しい、kubeadm join --dry-run
フラグは既存のkubeadm init/upgrade
のフラグと同様に、どのような変更が適用されるかを事前に知ることができます。 (#103027, @Haleygo) -
kubeadm: preflight時に、参加するワーカーノードで
/etc/kubernetes/manifests
フォルダが空かどうかを確認しなくなりました。 (#104942, @SataQiu)-
ユーザが独自のstatic podを
/etc/kubernetes/manifests
フォルダに事前に定義していた場合、エラーが発生していたようです。
-
ユーザが独自のstatic podを
-
etcdを3.5.1にアップグレードしました。 (#105706, @uthark) [SIG Cloud Provider, Cluster Lifecycle and Testing]
- etcd 3.5.0 にはいくつかの致命的なバグがありました。
ドキュメント (Documentation)
- なし。
バグ修正 (Bug or Regression)
- kubeadm: etcdのピアを既存のクラスタに追加する際、ピアがすでに追加されている、というエラーであった場合はそのエラーを許容し既存のメンバーを返すようにしました。これにより以前の呼び出しによりピアがすでに追加されていた場合でも最初のAddMenber呼び出しがタイムアウトしたときに指数関数的バックオフ(exponential backoff)を軽減させることができます。 (#104134, @ihgann)
-
kubeadm: 空の
--config
をkubeadm kubeconfig user
コマンドに渡すことができなくなりました。 (#105649, @navist2020)- PRには空のconfigの値が渡された場合には、"It still works properly." と書かれていましたが、正常に動作しているならバグではないのでは?と思いました…。
-
kubeadm: Windows ワーカーノードで、クラスタからダウンロードした KubeletConfiguration に Windows では動作しない Linux パスが含まれていることがあり、kubelet バイナリがトリップ?することがある不具合を修正しました。 (#105992, @hwdef) [SIG Cluster Lifecycle and Windows]
-
Windows のワーカーノードで kubeadm が実行されていた場合、KubeletConfiguration中の絶対パスにドライブレターが追加されて利用されるようです。例えば
/var/lib/kubelet/config.yaml
はC:/var/lib/kubelet/config.yaml
に変換されます。ちなみにドライブは、実行している kubeadm のバイナリが含まれているドライブが利用されるようです。
-
Windows のワーカーノードで kubeadm が実行されていた場合、KubeletConfiguration中の絶対パスにドライブレターが追加されて利用されるようです。例えば
-
kubeadm: Linuxノードにおいてswapが有効化されていた場合、swapをチェックするpreflightチェックがエラーではなく警告を出力するようになりました。この変更はkubeletにおける NodeSwap のFeatureGateがベータになり、バージョン1.23からデフォルトで有効化されたことに関連する修正です。次のkubeadmのリリース(v1.24)ではこのpreflight checkは削除されるので、このpreflight checkを利用の停止をお勧めします。
--ignore-preflight-errors
もしくは kubeadm の設定ファイルで無効化できます。 (#104854, @pacoxu)
その他 (Other (Cleanup or Flake))
-
ClusterConfiguration
で渡される Unicode 文字を持つ外部 etcd エンドポイントは、IDNA エンコードされなくなりました (Punycode に変換されます)。これらはGoのRFC-3986の実装に従ってURLエンコードされ、URLパスから重複する「/」が削除され、直接kube-apiserver
の--etcd-servers
フラグに渡されるようになりました。Unicode文字を含むetcdエンドポイントがある場合は、IDNAに完全に準拠したツールで事前にエンコードしておくことをお勧めします。エンコードを行わなかった場合、エンドポイントへのリクエストを行う際にk8sやetcdで使用されているGo標準ライブラリがそれを行ってしまうでしょう。 (#103801, @gkarthiks)-
URL文字列をノーマライズするモジュールである
github.com/PuerkitoBio/purell
がメンテナンスされていないため、簡易的なノーマライズに置き換えたようです。
-
URL文字列をノーマライズするモジュールである
-
kubeadm:
kube-controller-manager
のマニフェストから--port
フラグを削除しました。このフラグは 1.22 以降何も行なっておらず、コンポーネントにいうてinsecure servingが削除されていたためです。 (#104157, @knight42) -
kubeadm:
kube-scheduler
のマニフェストから--port
フラグを削除しました。このフラグは 1.23 以降何も行なっておらず、コンポーネントにいうてinsecure servingが削除されていたためです (#105034, @pacoxu) -
古いアーティファクトのロケーションへの参照を更新し、新しい
gs://k8s-release-dev
バケットに存在しない ci-cross prefixをバージョンマッチから削除しました。 (#103813, @SataQiu)- CI上で行うテストに関する修正でユーザーには影響ありません。