4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes 1.19 SIG-Node変更点調査

Last updated at Posted at 2020-09-10

はじめに

このページではKubernetes 1.19のChangelogを基に、SIG Nodeに関連する変更内容をまとめています。

What's New(新情報)

seccompがGeneral Availabilityへ

KubernetesのseccompサポートがGeneral Available(GA)となりました。この機能はワークロードセキュリティをPodやコンテナのシステムコールを制限することで高めるために利用されます。
これにより、seccompProfile フィールドが Pod と Container securityContext オブジェクトに追加されました。

securityContext:
  seccompProfile:
    type: RuntimeDefault|Localhost|Unconfined # choose one of the three
    localhostProfile: my-profiles/profile-allow.json # only necessary if type == Localhost

seccomp.security.alpha.kubernetes.io/podcontainer.seccomp.security.alpha.kubernetes.io/...のannotationは非推奨となり、Kubernetes v1.22.0で削除予定です。
いまのところ上記の新たに追加されたフィールドとannotationは相互に変換されるため、クラスタ内の既存のワークロードを変換するアクションは必要ありません。

  • :pencil: 利用可能なseccompを制御するPodSecurityPolicyはv1.19.0時点では専用フィールドはなく、annotationにより制御するようです

Known Issues(既知の問題点)

  • 特になし

Urgent Upgrade Notes(必ず一読してからアップグレードしなければならない事項)

  • 特になし

Changes by Kind(種類別の変更)

Deprecation

  • 特になし

API Change

  • KubeletがGPUのようなアクセラレータのメトリクス収集を無効化する機能を追加しました(#91930, @RenaudWasTaken)
    • :pencil: cAdvisorからこれらベンダー依存の強いGPUのようなメトリクスを取得しないようにするものです
    • :pencil: これらの移行手段としてはPod Resources APIやベンダーが各自実装したメトリクスを利用するようです
    • :pencil: FeatureGatesのDisableAcceleratorUsageMetricsで制御が可能です
  • クラスターアドミンはkubeletのコンフィグファイルでenableSystemLogHanderをfalseに設定することで、/logsエンドポイントをオフにできるようになりました。enableSystemLogHandler は enableDebuggingHandlers も true に設定されている場合のみ true に設定できます。(#87273, @SaranBalaji90)
  • ログのタイムスタンプに末尾のゼロが含まれ、固定幅を維持するようになりました。(#91207, @iamchuckss)
  • Kubelet の --runonce オプションは、Kubelet の設定ファイルでも runOnce として利用できるようになりました。(#89128, @vincent178)
  • Kubeletは--logging-formatフラグにより、構造化ロギングをサポートするようになりました。(#91532, @afrouzMashaykhi)
    • :pencil: textやjsonがフォーマットとして指定できるようです
  • Feature GatesのHugePageStorageMediumSizeがデフォルトで有効になり、コンテナレベルで複数のサイズのHugePageリソースを利用できるようになりました (#90592, @bart0sh)
    • :pencil: HugePageに関する公式ドキュメントはこちら
  • Kubelet の --node-status-max-images オプションは、Kubelet の設定ファイルのnodeStatusMaxImageで利用できるようになりました。(#91275, @knabben)
  • kubeletの--bootstrap-checkpoint-pathは削除されました。(#91577, @knabben)
  • kubeletの--cloud-provider--cloud-configオプションは非推奨としてマークされました。(#90408, @knabben)
  • kubeletの--enable-server--provider-idオプションがkubeletのコンフィグファイルのenableServerproviderIDフィールドで利用可能になりました。 (#90494, @knabben)
  • kubeletの--kernel-memcg-notificationオプションがkubeletのコンフィグファイルのkernelMemcgNotificationで利用できるようになりました。(#91863, @knabben)
  • kubeletの--really-crash-for-testing--chaos-chanceオプションは非推奨としてマークされました。(#90499, @knabben)
  • kubeletの--volume-plugin-dirオプションはkubeletのコンフィグファイルのVolumePluginDirで利用できるようになりました。 (#88480, @savitharaghunathan)

Features

  • CRI-APIのImageSpecオブジェクトへアノテーションを追加しました (#90061, @marosset)
  • cgroups v2ノードバリデーションのサポートが追加されました(#89901, @neolit123)
  • ノードレベルで異なるサイズのHugePageを事前に割り当てるサポートを追加しました(#89252, @odinuge)
  • v1beta1 device plugin APIへ新たにGetPreferredAllocation()が追加されました。(#92665, @klueska)
  • アドミッションプラグインのNodeRestrictionは新しいノードで作成する際にkubeletが許可されるノードラベルを、1.16以上でkubeletsが許容する--node-labelsパラメータに制限するようになりました(#90307, @liggitt)
  • 証明書のローテートするよう設定されたkubeletは、証明書切れのまでの残り時間をcertificate_manager_server_ttl_secondsをゲージのメトリクスとして出よくするようになりました。(#91148, @liggitt)
  • cgroups v2 ユニファイドモードを使用するホスト上での実行をサポート(#85218, @giuseppe)
  • Feature GatesのRotateKubeletClientCertificateはGAへ昇格し、kubeletの--feature-gate RotateKubeletClientCertificate パラメータは1.20で削除される予定です。(#91780, @liggitt)

Documentation

  • 特になし

Failing Test

  • 特になし

Bug or Regression

  • CVE-2020-8557 (Medium)。コンテナ /etc/hosts ファイルを経由したノードローカルのサービス拒否(#92916, @joelsmith)
    • :pencil: /etc/hostsがephemeral storageの使用量としてカウントされない問題があったようです
    • :pencil: これはv1.18.6, 1.17.9, 1.16.13でも修正されています
  • startupProbeは設定しているがreadinessProbeを設定しないコンテナは、startupProbeが完了する前readyとみなされていましたが、現在はnot readyとなるように修正されています(#92196, @thockin)
  • Dockershim security: Podのsandboxは常にno-new-privilegesruntime/default seccompプロファイルで動くようになりました。Custom ProfileがPodレベルでセットされた時、より小さなseccompプロファイルを持つようになりました。(#90948, @pjbgf)
  • 犠牲者がコンテナであるSystemOOMの検知を修正(#88871, @dashpole)
  • サポートされているhuge pageのサイズが変更された場合の問題を修正(#80831, @odinuge)
  • Topology Managerを有効にすると、再利用可能なCPUやdeviceの割り当てが行われない不具合を修正しました(#93189, @klueska)
  • CPUManager で、排他的な CPU を誤ったタイミングで解放する原因となっていたリグレッションを修正(#90377, @cbf123)
  • initContainerから継承したapp Containerで排他的なCPUを稀に開放する可能性があったCPUManagerのリグレッションを修正 (#90419
  • kubeletでパラメータcgroupPerQoS=falseかつcgroupRoot=/dockerとした時、cm.NodeAllocatableRootはnodeAllocatableRoot=/docker/kubepodsを間違えて返す。正しくは/dockerを返すべきである. (#88970, @mysunshine92)
  • kubelet resource metricsエンドポイントである/metrics/resourceにおいて、以下のメトリクスの名前を変更します
    • node_cpu_usage_seconds --> node_cpu_usage_seconds_total
    • container_cpu_usage_seconds --> container_cpu_usage_seconds_total
      これはv1.18.0で追加された#86282の部分的なrevertであり、最初は接尾語の_totalが削除されていました(#89540, @dashpole)
  • Kubelet: kubeletのヘルプ情報に正しいタイプのフラグが表示されないバグを修正(#88515, @SataQiu)
  • cluster/ge/manifestsにあるコントロールプレーンマニフェストで静的なコントロールプレーンのPodのプライオリティをリストアします(#89970, @liggitt)
  • 1.19rc1で追加されたWindowsノードのためのdevicemanagerをrevertします(#93263, @liggitt)
  • mirror podからpod specのterminationGracePeriodSecondsを尊重するよう修正 (#92442, @tedyu)
    • :pencil: この修正はv1.19にしか入っていないようです
  • status subresource経由でPodのstatusをアップデートすると、status.podIPstatus.podIPsのフィールドが整形されているか検証されるようになりました。(#90628, @liggitt)
  • Evictionするとき、Pending状態のPodはPDBのチェックなしに削除されます(#83906, @michaelgugino)
  • [security] golang.org/x/text/encoding/unicodeの脆弱性対応 (#92219, @voor)

Other (Cleanup and Flake)

  • Kubeletのexperimental-allocatable-ignore-evictionオプションは非推奨としてマークされました(#91578, @knabben)
  • Feature GateのPodShareProcessNamespaceは削除され、PodShareProcessNamespaceは無条件に有効となります。(#90099, @tanjunchen)
  • kube-apiserver の --kubelet-https フラグは非推奨です。 kube-apiserver の kubelets への接続は無条件に https を使うようになりました (kubelets は v1.0 以前から apiserver が通信するエンドポイントには無条件に https を利用しています)。(#91630, @liggitt
  • corefile-migrationライブラリをv1.0.8へアップデート(#91856, @wawa0210)
  • opencontainers/runtime-specをv1.0.2へアップデート(#89644, @saschagrunert)
  • beta.kubernetes.io/osbeta.kubernetes.io/arch のノードラベルは非推奨です。node selectorをkubernetes.io/oskubernetes.io/arch を使うように更新してください。(#91046, @wawa0210)
4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?