LoginSignup
0
0

More than 1 year has passed since last update.

Kubernetes 1.24: SIG-Node (kubelet) 変更内容

Posted at

本記事は,Kubernetes 変更内容共有会(v1.24) の SIG-Node(kubelet)に関する資料として準備されました.Kubernetes 1.24の CHANGELOG から,SIG-Nodeに関するところを抜粋して紹介します.

:pencil: は筆者(@y1r96)による補足です.

所感

:pencil: Dockershim は v1.20 で deprecated になりましたが, v1.24 でついに廃止となりました.パッチ としては 53k 行の削除となりました.Dockerからcontainerdに移行した場合は,Kubernetes ノードの上で docker コマンドは使用できなくなりましたが,代わりに nerdctl を使用することができます. 他の変更としては,gRPC probe サポートは便利そうですね.

Urgent Upgrade Notes

  • DockershimによるDocker runtimeのサポートが完全に削除されました.KubeletはdockershimというDockerのCRIサポートを実装していましたが,コミュニティにおいてメンテナンス上の問題が発生していました.v1.24 以降はCRI (v1alpha1 もしくは v1)互換のコンテナランタイム実装を利用してください. (#97252, @dims) [sig/network,sig/node,sig/instrumentation,sig/testing,sig/cloud-provider]

  • deprecatedなフラグ --experimental-check-node-capabilities-before-mount が削除されました.CSIはGAなのでそれが良い代替となります. kubelet scripts や manifests からこのフラグを削除してください. (#104732, @mengjiao-liu) [sig/storage,sig/node,sig/apps,sig/cloud-provider]

Changes by Kind

Deprecation

  • Kubelet の --pod-infra-container-image フラグがdeprecatedになり,将来のリリースで削除されることになりました.(#108045, @hakman) [sig/node]
  • node.k8s.io/v1alpha1 RuntimeClass API は提供されなくなりました.代わりに v1.20 から利用可能な node.k8s.io/v1 を使用してください. (#103061, @SergeyKanzhelev) [sig/node,sig/api-machinery,sig/cli,sig/testing]

API Change

  • PodOverhead 機能がGAしました.(#108441, @pacoxu) [sig/scheduling,sig/node,sig/api-machinery,sig/apps]
    • :pencil: PodOverhead は Pod を実行するときのランタイムが使用するリソースのオーバヘッドを RuntimeClass に記述するための機能です.ここで記述されたリソース量ははPodSpec内のリソースに加算されます.
  • Kubelet が 終了コード1 で終了したときの defer function 内のログ出力のフラッシュに失敗する問題が修正されました.(#104774, @kerthcet) [sig/scheduling,sig/node]
  • Kubelet external Credential Provider 機能が Betaになりました. Credential Provider Plugin と Credential Provider Config API は v1alpha1 からv1beta1 に APIの変更なしに移行しました.(#108847, @adisky) [sig/node,sig/api-machinery]
    • :pencil: Kubelet Credential Providers は,イメージレジストリからのpullに使うcredentialを動的に取得するための機能で,プラグインにより他のレジストリをサポートできます.
  • ステートフルなワークロードのフェイルオーバーのためのNon-graceful node shutdown handlingが有効になりました.(#108486, @sonasingh46) [sig/storage,sig/node,sig/apps]
    • :pencil: KEP: Non graceful node shutdown は Kubelet の Node Shutdown Manager が検知できないようなノードシャットダウンに対処するための機能です.例えばRWOなVolumeをマウントしているStatefulSetがあった場合,VolumeAttachmentを削除しなければ別のノードにVolumeをアタッチできません.このKEPではこのような問題に対処します.
  • IdentifyPodOS 機能が betaになりました.(#107859, @ravisantoshgudimetla) [sig/node,sig/api-machinery,sig/apps,sig/windows,sig/testing]
  • gRPC probeサポートがbetaになりました.GRPCContainerProbe feature gateはデフォルトで有効です. (#108522, @SergeyKanzhelev) [sig/node,sig/api-machinery,sig/apps,sig/testing]
    • :pencil: Liveness Probe, Readiness Probe, Start Probe として gRPC を利用できるようになりました.

Feature

  • kubelet_volume_stats_health_abnormal という volume heath state を提供するメトリクスがKubeletに追加されました (#105585, @fengzixu) [sig/storage,sig/node,sig/instrumentation,sig/testing]
  • container_oom_events_total というメトリクスがKubelet cAdvisor metricに追加されました (#108004, @jonkerj) [sig/node]
  • Volumeマウントにかかる時間を計測するメトリクスがKubeletに追加されました (#107006, @gnufied) [sig/storage,sig/node]
  • CRI-APIのCapabilities messageに add_ambient_capabilities が追加されました (#104620, @vinayakankugoyal) [sig/node]
  • no PodSandboxのメッセージが改善されました (#107116, @yxxhero) [sig/node]
  • kubelet_volume_metric_collection_duration_seconds という volume disk usage calculation duration を提供するメトリクスがKubeletに追加されました (#107201, @pacoxu) [sig/storage,sig/node,sig/instrumentation]
  • dockershimに関連する起動フラグ --experimental-dockershim-root-directory, --docker-endpoint, --image-pull-progress-deadline, --network-plugin, --cni-conf-dir, --cni-bin-dir, --cni-cache-dir, --network-plugin-mtu が削除されました (#106907, @cyclinder) [sig/node,sig/testing,sig/cloud-provider]
  • Pod Priolityに基づく graceful shutdown が Betaになりました (#107986, @wzshiming) [sig/node,sig/instrumentation,sig/testing]
  • feature gate SetHostnameAsFQDN が削除されました (#108038, @mengjiao-liu) [sig/node]
  • Kubelet が KUBE-IPTABLES-HINT という iptables chain を mangle テーブルに追加するようになりました.host network namespaceにおいてiptablesルールを変更する必要があるコンテナ化されたコンポーネントが iptables-legacyiptables-nft のどちらが利用されているシステムかどうかをより信頼性の高い方法で判定できるようになりました.(#109059, @danwinship) [sig/network,sig/node]

Bug or Regression

  • Kubelet に --node-ip 引数で提供されたIPアドレスが,external cloud provider (CCM) を利用している時にノードのプライマリIPとして優先されるようになります.(#107750, @stephenfin) [sig/node,sig/cloud-provider]
  • 高速に更新されたstatic podが,Kubeletが再起動されるまでfailしていた問題を修正します.(#107900, @smarterclayton) [sig/node,sig/testing]
  • kubelet_volume_stats_health_abnormal というvolume health state を提供するメトリクスがKubeletに追加されました (#108758, @fengzixu) [sig/storage,sig/node,sig/instrumentation,sig/testing]
  • アタッチ済みのvolumeがnot in-useなとき,exponential backoffをスキップすることでより高速にマウントされるようになります (#106853, @gnufied) [sig/storage,sig/node,sig/apps]
  • CRI-API: PodSandboxNetworkStatus によって返却されたIPが,host-networkなpodにおいては無視されていました (#106715, @aojea) [sig/node]
  • NodeExpand を RWX volume の場合全ノードで呼ぶようにします (#108693, @gnufied) [sig/storage,sig/node,sig/apps]
  • コンテナ起動の失敗が,時に Succeeded として考慮されていた問題を修正します (#107845, @smarterclayton) [sig/node]
  • CPUリクエストが256コア以上だった場合にコンテナの作成に失敗していた問題を修正します (#106570, @odinuge) [sig/node]
  • Fix libct/cg/fs2: Raspbian Bullseye において未サポートなhugetlb における GetStats が失敗していた問題を修正します (#106912, @Letme) [sig/node]
  • APIにおいて他のPodがCompletedだと報告されてすぐにPodがスケジュールされたときに,Podを誤って OutOfCpu だとして拒否していたregressionを修正します.Kubeletは,コンテナが全て終了して他のコンテナが作成されない状態になるまでAPIにPodが終了したと報告するのを待ちます.短命なPodの場合,1秒程度 Succedded か Failed と報告されるまでの時間がわずかに長くなることがあります. (#108366, @smarterclayton) [sig/node,sig/apps,sig/testing]
  • Topology Managerにおいて,2以上のNUMAノードにまたがるallocationに関するバグを修正します. (#108052, @klueska) [sig/node]
  • アプリケーションのコンテナがInitContainerから継承したexclusiveなCPUを,InitContainerが削除された時に開放してしまうregressionを修正します (#104837, @eggiter) [sig/node]
  • static podが追加または削除された場合に,いくらかのケースで再起動しない問題を修正します (#107695, @rphillips) [sig/node]
  • Kubeletはstatic podを除いて,NoExecute taintやtolerationを確認します (#101218, @gjkim42) [sig/node]
  • ローカルノードにAppArmorのプロファイルがロードされている場合のvalidationを削除します.これはコンテナランタイムで処理されるべきです. (#97966, @saschagrunert) [sig/node,sig/auth,sig/security]
  • Graceful node shutdown を有効にした場合,正常に終了しなかったPodを Failed と設定する振る舞いを v1.21 の状態にrevertしました. GracefulNodeShutdown 機能はベータで, v1.21+ で kubelet config を使って明示的に有効にする必要があります. これは v1.22 と v1.23 での ノードシャットダウンにおける振る舞いを v1.21 にマッチするようにします.もし, v1.22 と v1.23 で ノードシャットダウン時に pod を terminated だとしたくない場合には,GracefulNodeShutdown を無効にしてください. (#106901, @bobbypage) [sig/node,sig/testing]
  • Dockershim が利用する CRI API version を v1alpha2 に revert します. (#106803, @saschagrunert) [sig/network,sig/node]
  • Podが既に削除されている場合,panicを防ぐためにre-allocateのロジックをスキップするようにします (#108831, @waynepeking348) [sig/node]
  • deprecatedなフラグ --really-crash-for-testing を削除します (#101719, @SergeyKanzhelev) [sig/network,sig/node,sig/api-machinery,sig/testing]
  • KubeletはHTTP2のヘルスチェック機構を使って壊れた接続を検出するようにすることで,ハートビートに失敗した時にアクティブな接続を強制的に閉じなくなりました.ユーザは以前の振る舞いに戻すために DISABLE_HTTP2 環境変数を利用することができます. (#108107, @aojea) [sig/node,sig/api-machinery]
  • Windows ノードにおける Kubelet の権限チェックを更新して,プロセス所有者がAdministratorsグループに所属しているか確認するのではなく,プロセスが昇格されているか確認するようにしました (#108146, @marosset) [sig/node,sig/windows]

Other (Cleanup or Flake)

  • build/dependencies.yaml: Dockerへの依存を削除しました.dockershim を削除したことで,Kubernetesのコアはdockerのバージョンを追跡する必要がなくなりました. (#107607, @neolit123) [sig/node,sig/cluster-lifecycle]
  • TopologyManager における non-preferred なヒントを選択するアルゴリズムを改善しました (#108154, @klueska) [sig/node]
  • Kubelet config の検証エラーメッセージを更新しました (#105360, @shuheiktgw) [sig/node]
  • kubelet の --container-runtime-endpoint--image-service-endpoint CLI flag を stable としました (#106954, @saschagrunert) [sig/node]
  • kubeletのRuntimeClass feature gateを削除しました(この機能は1.14からデフォルトで有効で,1.20でGAしています) (#106882, @cyclinder) [sig/node]
  • kubeletのdeprecatedなCLI flag --non-masquerade-cidr を削除しました (#107096, @hakman) [sig/node,sig/cloud-provider]
  • kubelet の --container-runtime フラグは deprecated になり,将来のリリースで削除されます (#107094, @adisky) [sig/node]
  • runc が 1.1.0,cAdvisor が 0.44.0 に更新されました (#109029, @ehashman) [sig/node,sig/cli,sig/testing]
  • runc が 1.1.1 に更新されました (#109104, @kolyshkin) [sig/node]
0
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
0
0