LoginSignup
3
0

More than 1 year has passed since last update.

Kubernetes 1.22: SIG Cluster Lifecycle の変更内容

Last updated at Posted at 2021-08-16

Kubernetes 1.22 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてにピックアップしました。

主な変更点 (What's New)

kubeadmを使ったさらに安全なコントロールプレーンの構築

新しいアルファ機能によって、kubeadmのコントロールプレーンがnon-rootなユーザで実行することができるようになりました。これは長らくkubeadmに求められていたセキュリティ対策となります。試す場合にはkubeadm特有の RootlessControlPlane フィーチャーゲートを有効化してください。このアルファ機能を使ってクラスターをデプロイすることで、コントロールプレーンは少ない権限で実行されます。

新しいv1beta3の設定APIはv1beta2をベースに長らく求められていた機能を追加し、いくつかの機能を非推奨としました。そのため、v1beta3は現在推奨されているAPIのバージョンとなりますが、v1beta2APIも引き続き利用可能であり、非推奨APIではありません。

既知の問題 (Known Issues)

  • なし。

重大なアップグレードに関する警告 (Urgent Upgrade Notes)

  • kubeadm: Docker向けのcgroupドライバーの自動判定を削除しました。新しいクラスタを構築する際にcgroupドライバーを明示的に設定していない場合、kubeletのドライバーの不一致で失敗することがあります (kubeadmのクラスタはsystemdドライバーを使うべきです)。また、同じようにDockerのcgroupドライバーがsystemdに設定されていることを確認するIsDockerSystemdCheckの事前チェック(警告)も削除されました。理想的には、このような検出と調整はCRIの実装とkubeletとの間で行われるべきです(#99808)。kubeadmでどのようにcgroupドライバーを手動で設定するかについては該当のページをご覧ください。 (#99647, @neolit123)

    • :pencil: kubeadmはinitとしてsystemdを前提としているため、cgroupドライバーとしてそれ以外が設定されている環境がよくわからないです。
  • kubeadm: --cri-socketフラグと--configフラグを同時に指定することができなくなりました。ノードのCRIソケットを設定したい場合はkubeadmの設定ファイルの{Init|Join}Configuration.nodeRegistration.criSocketを指定してください。 (#101600, @KofClubs)

  • kubeadm: --experimental-patchesフラグは非推奨になりました、将来のリリースで削除されます、新しい--patchesフラグに移行してください。また、設定ファイルに新しいフィールド、--experimental-patchesが追加され、同じ目的に利用することができます。initおよびjoin時には{Init|Join}Configuration.patches.directoryを利用してパッチを設定する方法に移行することをお勧めします。今のところ、これらのフラグは --config と混在させることができますが、将来的には変更されるかもしれません。コマンドラインでは、最後の --patches フラグがそれまでのフラグや config の値よりも優先されます。 kubeadm upgrade --patches は今後も唯一の選択肢となります。 (#103063, @neolit123)

種々の変更 (Changes by Kind)

廃止予定 (Deprecation)

  • kubeadm: v1beta3からClusterStatus APIを削除し、その管理をkube-system/kubeadm-config ConfigMapで行うようにしました。クラスタに存在するAPIエンドポイントを追跡するこの方法は、(前のリリースで)kubeadmが「stacked etcd」クラスタで作成するetcd Podのアノテーションに記録する方法に置き換えられました。kubeadm join における "control-plane-join/update-status" サブフェーズおよび kubeadm reset における "update-cluster-status "サブフェーズは非推奨となり、何も行いません。ユーザはこれらのフェーズを明示的に使用していない限り、影響を受けることはありません。 (#101915, @neolit123)

  • kubeadm: kubeadm init phase certsサブコマンドにおける非推奨の--csr-only--csr-dirフラグを削除しました。また、同様にkubeadm certs renewにおける同じフラグを削除しました。両方のコマンドにおいて代わりにkubeadm certs generate-csrコマンドを利用してください。 (#102108, @neolit123)

  • kubeadm: 非推奨のkubeadm alpha kubeconfigサブコマンドが削除されました。kubeadm kubeconfigサブコマンドを利用してください。 (#101938, @knight42)

  • kubeadm: v1beta3APIにおいて非推奨出会ったhyperkubeイメージのサポートを終了しました。これによりClusterConfiguration.UseHyperKubeImageフィールドが削除されました。 (#101537, @neolit123)

  • kubeadm: CoreDNSがサポートされる唯一のDNSタイプであるため、v1beta3 API の ClusterConfiguration.DNS.Type が削除されました。 (#101547, @neolit123)

  • kubeadm: 非推奨の kubeadm config view サブコマンドが削除されました。このコマンドの代わりに kubectl get cm -n kube-system kubeadm-config -o=jsonpath="{.data.ClusterConfiguration}" を利用することができます。 (#102071, @neolit123)

  • kubeadm: kubeadm upgrade applyにおける非推奨の--image-pull-timeoutフラグが削除されました。 (#102093, @SataQiu)

  • kubeadm: kubeadmが管理するkube-apiserverのマニフェストから、非推奨の--insecure-portフラグが削除されました。このフラグは Kubernetes version 1.20からコンポーネントのinsecure servingが無効化されたため何の影響もありませんでした。 (#102121, @pacoxu)

  • kubeadm: 非推奨のv1beta1 APIが削除され、新しい v1beta3 が追加されました。v1beta2との差分についてはAPIドキュメントを参照してください。v1beta2APIはまだ非推奨ではありませんが、将来のバージョンで削除されます。 (#101129, @neolit123)

API の変更 (API Change)

  • なし。

機能 (Feature)

  • kubeadm: kubeadm kubeconfig userサブコマンドに--validity-periodフラグが追加されました。 (#100907, @SataQiu)

    • :pencil: kubeadm kubeconfig userで生成されるkubeconfigで利用されるクライアント証明書の期限を設定できるようになったようです。
  • kubeadm: kubeadm特有のRootlessControlPlaneフィーチャーゲートが追加されました(1.22ではアルファ機能であり、デフォルトで無効化されています)。コントロールプレーンのkube-apiserver, kube-controller-manager, kube-scheduleretcdのstatic Podコンテナを非rootユーザで実行する実験的機能を有効化します。 (#102158, @vinayakankugoyal)

  • kubeadm: Static Podとして実行しているコントロールプレーンのコンポーネントにおけるPodSecurityContext中のseccompProfileruntime/defaultに設定しました。 (#100234, @vinayakankugoyal)

  • kubeadm: InitConfigurationJoinConfigurationv1beta3skipPhasesフィールドが追加されました。このフィールドにはkubeadm initおよびkubeadm join時にスキップするフェーズのリストを設定することができます。--skip-phasesフラグはこのフィールドより優先されます。 (#101923, @neolit123)

    • :pencil: kube-proxyを必要としないCNIを利用する際など、コンポーネントのインストールをスキップしたい場合に利用します。Cluster APIなどからAPI越しに利用することを想定しているようです。
  • kubeadm: kubeadm initcontrol-planeフェーズに--dry-runフラグを追加しました。 (#102722, @vinayakankugoyal)

  • kubeadm: v1beta3にて、InitConfiguration.JoinConfigurationnodeRegistrationimagePullPolicyフィールドが追加されました。これによりkubeadm initkubeadm join時にイメージプルポリシーが設定できるようになりました。AlwaysIfNotPresentまたはNeverを指定することができ、IfNotPresentがデフォルト値です。 (#102901, @wangyysde)

  • kubeadm: kubeadm init/join/upgrade時において、ユーザーが特に指定しない限りKubeletConfiguration中のcgroupDriverの値は常にsystemdがデフォルト値となります。詳細はConfiguring a cgroup driverを確認ください。 (#102133, @pacoxu)

  • kubeadm: CoreDNSのバージョンを1.8.4に変更しました。また、dual-stackサポートを収容できるよう、EndpointSliceオブジェクトのlistwatchへの許可を与えました。 (#102466, @pacoxu)

ドキュメント (Documentation)

  • なし。

バグ修正 (Bug or Regression)

  • kuebadm: イメージタグがバージョンメタデータの形式である場合、ビルドメタデータを含んだetcdイメージのカスタムイメージタグをサポートしました。例) etcdのバージョンがv3.4.13+patch.0であった場合、サポートされるイメージタグはv3.4.13_patch.0になります。 (#100350, @jr0d)

  • kubeadm: --configフラグを指定時に、--log-fileフラグが指定できるようになりました。ログをファイルに保存したい場合は同時に--logtostderr=false フラグか --alsologtostderr=trueフラグを指定してください。ちなみにこれらのフラグは kubeadm ... | tee ...で代替可能です。 (#101449, @CaoDonghui123)

  • kubeadm: kubeadm join phase control-plane-join allコマンドにおいてkubeadm join phase control-plane-join allフラグが利用できるようになりました。 (#101110, @SataQiu)

  • kubeadm: コントロールプレーンノードのkubeadm joinがクラスタから証明書と鍵をダウンロードしますが、モード0644で一般に読めように証明書と公開鍵を書き込まず、代わりにモード0600で書き込むというバグを修正しました。 (#103313, @neolit123)

  • kubeadm: ルートCA検証時にcaCertHashesの最初のハッシュしか利用しなかった問題を修正しました。 (#101977, @SataQiu)

  • kubeadm: kubeadm が Stacked etcd のコントロールプレーンノードにデプロイする etcd の static pod からephemeral_storageのリソースリクエストを削除します。このリソースリクエストはcadvisorとLocalStorageCapacityIsolationフィーチャーゲートを利用するkubeletに問題があるため、一部のセットアップで散発的な問題を引き起こしていました。詳細は#99305を参照してください。 (#102673, @jackfrancis)

  • kubeadm: CoreDNSのカスタムイメージレポジトリを指定していた際にイメージ名としてcoredns/corednsではなくcorednsを追加するようになりました。この挙動はv1.21リリース以前の挙動と同じです。CoreDNSのイメージがネストされたフォルダに依存していた場合は、ネストされたパス名をclusterConfiguration.dns.imageRepositoryに設定してください。(例: registry.company.xyz/coredns を設定した場合はregistry.company.xyz/coredns/corednsがイメージ名として利用されます。) デフォルトのレジストリを利用している人は何の影響もありません。 (#102502, @ykakarap)

その他 (Other (Cleanup or Flake))

  • kubeadm: BootstrapToken APIと関連するユーティリティのバージョンが、v1beta3から別のAPI group/versionである"bootstraptoken/v1"に移動しました。 (#102964, @neolit123)

  • kubeadm: CriticalAddonsOnly tolerationがkube-proxy DaemonSetから削除されました。 (#101966, @SataQiu)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0