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

本記事は，Kubernetes 変更内容共有会(v1.23) の SIG-Node(kubelet)に関する資料として準備されました．Kubernetes 1.23の [CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md) から，SIG-Nodeに関するところを抜粋して紹介します．

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

## 所感
:pencil: エフェメラルコンテナ（Pod作成後に，デバッグ用のコンテナなどを追加して同じnamespaceでデバッグする機能）がBetaに昇格しました．小さいイメージを使っている場合にもデバッグがやりやすくなっていいですね．また，Generic エフェメラルボリューム がGAしました．これは，色々なstorageClass上にエフェメラル（podと同じ生存期間）なPVを設定できる機能で，ローカルボリュームやメモリでは足りない大きな容量のエフェメラルなPVを設定するときに便利そうです．また，CPU Managerの機能拡張（ポリシーオプションの追加や様々なNUMA環境のサポート）も行われており，高性能計算的な計算負荷が大きいワークロードをKubernetesに載せることがやりやすくなりました．

## Urgent Upgrade Notes
<!--
- Support for the seccomp annotations `seccomp.security.alpha.kubernetes.io/pod` and `container.seccomp.security.alpha.kubernetes.io/[name]` has been deprecated since 1.19, will be dropped in 1.25. Transition to using the `seccompProfile` API field. ([#104389](https://github.com/kubernetes/kubernetes/pull/104389), [@saschagrunert](https://github.com/saschagrunert))
-->
- seccomp annotations `seccomp.security.alpha.kubernetes.io/pod` と `container.seccomp.security.alpha.kubernetes.io/[name]` が v1.19 からdeprecatedになり，v1.25で削除されることになりました．かわりに，[`seccompProfile`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core) API を使って設定してください．([#104389](https://github.com/kubernetes/kubernetes/pull/104389), [@saschagrunert](https://github.com/saschagrunert))

## Changes by Kind
### Deprecation
<!--
-The deprecated `--experimental-bootstrap-kubeconfig` flag has been removed. This can be set via `--bootstrap-kubeconfig`. ([#103172](https://github.com/kubernetes/kubernetes/pull/103172), [@niulechuan](https://github.com/niulechuan))
-->
- kubeletのdeprecatedだったオプション `--experimental-bootstrap-kubeconfig` が削除されました．かわりに， `--bootstrap-kubeconfig` を使って設定してください． ([#103172](https://github.com/kubernetes/kubernetes/pull/103172), [@niulechuan](https://github.com/niulechuan))

### API Change
<!--
- Ephemeral containers graduated to beta and are now available by default. ([#105405](https://github.com/kubernetes/kubernetes/pull/105405), [@verb](https://github.com/verb))
- Fix kube-proxy regression on UDP services because the logic to detect stale connections was not considering if the endpoint was ready. ([#106163](https://github.com/kubernetes/kubernetes/pull/106163), [@aojea](https://github.com/aojea))
- In kubelet, log verbosity and flush frequency can also be configured via the configuration file and not just via command line flags. In other commands (kube-apiserver, kube-controller-manager), the flags are listed in the "Logs flags" group and not under "Global" or "Misc". The type for `-vmodule` was made a bit more descriptive (`pattern=N,...` instead of `moduleSpec`). ([#106090](https://github.com/kubernetes/kubernetes/pull/106090), [@pohly](https://github.com/pohly))
- JSON log output is configurable and now supports writing info messages to stdout and error messages to stderr. Info messages can be buffered in memory. The default is to write both to stdout without buffering, as before. ([#104873](https://github.com/kubernetes/kubernetes/pull/104873), [@pohly](https://github.com/pohly))
- Kubelet should reject pods whose OS doesn't match the node's OS label. ([#105292](https://github.com/kubernetes/kubernetes/pull/105292), [@ravisantoshgudimetla](https://github.com/ravisantoshgudimetla))
- Kubelet: turn the KubeletConfiguration v1beta1 `ResolverConfig` field from a `string` to `*string`. ([#104624](https://github.com/kubernetes/kubernetes/pull/104624), [@Haleygo](https://github.com/Haleygo))
- Remove `NodeLease` feature gate that was graduated and locked to stable in 1.17 release. ([#105222](https://github.com/kubernetes/kubernetes/pull/105222), [@cyclinder](https://github.com/cyclinder))
- Removed deprecated `--seccomp-profile-root`/`seccompProfileRoot` config. ([#103941](https://github.com/kubernetes/kubernetes/pull/103941), [@saschagrunert](https://github.com/saschagrunert))
- Support pod priority based node graceful shutdown. ([#102915](https://github.com/kubernetes/kubernetes/pull/102915), [@wzshiming](https://github.com/wzshiming))
- The "Generic Ephemeral Volume" feature graduates to GA. It is now enabled unconditionally. ([#105609](https://github.com/kubernetes/kubernetes/pull/105609), [@pohly](https://github.com/pohly))
- The Kubelet's `--register-with-taints` option is now available via the Kubelet config file field registerWithTaints ([#105437](https://github.com/kubernetes/kubernetes/pull/105437), [@cmssczy](https://github.com/cmssczy))
-->

- エフェメラルコンテナがBetaになり，デフォルトで有効になりました． ([#105405](https://github.com/kubernetes/kubernetes/pull/105405), [@verb](https://github.com/verb))
- UDPサービスにおける接続がstaleであることを判定するロジックがエンドポイントのreadinessを考慮していなかった，kube-proxyのregression bugを修正しました．([#106163](https://github.com/kubernetes/kubernetes/pull/106163), [@aojea](https://github.com/aojea))
- Kubeletにおけるlogのverbosityとflush頻度をコマンドライン引数でしか設定できませんでしたが，設定ファイルからも設定できるようになりました． ([#106090](https://github.com/kubernetes/kubernetes/pull/106090), [@pohly](https://github.com/pohly))
- JSON log outputが設定可能になり，infoメッセージを標準出力，errorメッセージを標準エラー出力に出力できるようになりました．infoメッセージはバッファリングにも対応しています．デフォルトの動作は，以前のようにどちらも標準出力にバッファリングなしで出力します． ([#104873](https://github.com/kubernetes/kubernetes/pull/104873), [@pohly](https://github.com/pohly))
- KubeletがノードのOSラベルとpodのOSラベルを照合して，一致しない場合は拒否するようにします． ([#105292](https://github.com/kubernetes/kubernetes/pull/105292), [@ravisantoshgudimetla](https://github.com/ravisantoshgudimetla))
  - :pencil: v1.23から追加された[`podSpec.os`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podos-v1-core) の情報を使って照合を行うようです．
- KubeletConfigration v1beta1 の `ResolverConfig` の型が `string` から `*string` に変更になりました． ([#104624](https://github.com/kubernetes/kubernetes/pull/104624), [@Haleygo](https://github.com/Haleygo))
- v1.17からgraduateしてstableになった `NodeLease` feature gateが削除されました． ([#105222](https://github.com/kubernetes/kubernetes/pull/105222), [@cyclinder](https://github.com/cyclinder))
- deprecated だった `--seccomp-profile-root` 引数と， `seccompProfileRoot` config が削除されました． ([#103941](https://github.com/kubernetes/kubernetes/pull/103941), [@saschagrunert](https://github.com/saschagrunert))
- pod priority ベースの graceful なノードシャットダウンをサポートしました． ([#102915](https://github.com/kubernetes/kubernetes/pull/102915), [@wzshiming](https://github.com/wzshiming))
  - :pencil: プライオリティごとにpodの終了に要する時間を設定することができます．例えば高プライオリティなpodは，通常のプライオリティのpodに比べ停止まで長時間待つ，というふうな設定をすることができます．詳しくは[KEP-2712](https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2712-pod-priority-based-graceful-node-shutdown) をご参照ください．
- Generic エフェメラルボリューム が GA しました．現在は無条件に有効です．([#105609](https://github.com/kubernetes/kubernetes/pull/105609), [@pohly](https://github.com/pohly))
  - :pencil: [エフェメラルボリューム](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/) とは，podの生存期間と同じ生存期間を持つボリュームのことで，有名な例としては `emptyDir` があります． Generic エフェメラルボリュームとは，このようなボリュームを任意の [`PersistentVolumeClaimTemplate`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#persistentvolumeclaimtemplate-v1-core) をインラインに埋め込んで定義できる機能です．
- Kubeletの `--register-with-taints` オプションが，config fileの `registerWithTaints` というフィールドから設定するようになりました． ([#105437](https://github.com/kubernetes/kubernetes/pull/105437), [@cmssczy](https://github.com/cmssczy))

### Feature
<!--
- The CPUManager policy options are now enabled, and we introduce a graduation path for the new CPU Manager policy options. ([#105012](https://github.com/kubernetes/kubernetes/pull/105012), [@fromanirh](https://github.com/fromanirh))
- Add a new `distribute-cpus-across-numa` option to the static `CPUManager` policy. When enabled, this will trigger the `CPUManager` to evenly distribute CPUs across NUMA nodes in cases where more than one NUMA node is required to satisfy the allocation. ([#105631](https://github.com/kubernetes/kubernetes/pull/105631), [@klueska](https://github.com/klueska))
- Portworx
- Added support for `PodAndContainerStatsFromCRI` feature gate, which allows a user to specify their pod stats must also come from the CRI, not `cAdvisor`. ([#103095](https://github.com/kubernetes/kubernetes/pull/103095), [@haircommander](https://github.com/haircommander))
- Allows users to prevent garbage collection on pinned images ([#103299](https://github.com/kubernetes/kubernetes/pull/103299), [@wgahnagl](https://github.com/wgahnagl))
- CRI v1 is now the project default. If a container runtime does not support the v1 API, Kubernetes will fall back to the v1alpha2 implementation. ([#106501](https://github.com/kubernetes/kubernetes/pull/106501), [@ehashman](https://github.com/ehashman))
- The label reconciliation happens as part of periodic status update which can be configured via flag `--node-status-update-frequency` ([#104613](https://github.com/kubernetes/kubernetes/pull/104613), [@ravisantoshgudimetla](https://github.com/ravisantoshgudimetla))
- Move the `GetAllocatableResources` Endpoint in PodResource API to the beta that will make it enabled by default. ([#105003](https://github.com/kubernetes/kubernetes/pull/105003), [@swatisehgal](https://github.com/swatisehgal))
- The CPUManager policy options are now enabled, and we introduce a graduation path for the new CPU Manager policy options. ([#105012](https://github.com/kubernetes/kubernetes/pull/105012), [@fromanirh](https://github.com/fromanirh))
- The `/openapi/v3` endpoint will be populated with OpenAPI v3 if the feature flag is enabled ([#105945](https://github.com/kubernetes/kubernetes/pull/105945), [@Jefftree](https://github.com/Jefftree))
- The `CSIMigrationGCE` feature flag is turned `ON` by default ([#104722](https://github.com/kubernetes/kubernetes/pull/104722), [@leiyiz](https://github.com/leiyiz))
- The `DownwardAPIHugePages` feature is now enabled by default. ([#106271](https://github.com/kubernetes/kubernetes/pull/106271), [@mysunshine92](https://github.com/mysunshine92))
- The `constants/variables` from k8s.io for STABLE metrics is now supported. ([#103654](https://github.com/kubernetes/kubernetes/pull/103654), [@coffeepac](https://github.com/coffeepac))
- Update the system-validators library to v1.6.0 ([#106323](https://github.com/kubernetes/kubernetes/pull/106323), [@neolit123](https://github.com/neolit123))
-->

- `CPUManager` のポリシーオプションがBetaになり，標準で使えるようになりました，また，ポリシーオプションについてそれぞれAlphaやBetaが設定されるようになりました． ([#105012](https://github.com/kubernetes/kubernetes/pull/105012), [@fromanirh](https://github.com/fromanirh))
- `CPUManager` のstaticポリシーに `distribute-cpus-across-numa` オプションが追加されました．有効にすると，`CPUManager` がCPU割り当てに複数のNUMAノードが必要な場合，その複数個のNUMAノード上にCPUを均等に割り付けることになります．
  - :pencil: [`CPUManager`](https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/) とは，v1.12からbetaになったPodのCPU要求を予めCPUコアに割り付ける機能のことです．policyには何も行わない`none`と，割り付けを行うことで予めpodが使うコアを決めておく`static`があります．これまではstaticポリシーのオプションとして`full-pcpus-only`があり，これは仮想コア(vCPU)ではなく物理コアを割り付けるものでした．この変更ではさらに，複数のNUMAノードに均等に割り付ける`distribute-cpus-across-numa`オプションを追加することになります．
- Portworxプラグインのサポートがcsi-translation-libに追加されました．これにより，`CSIMigrationPortworx` feature gateが使えるようになります．([#103447](https://github.com/kubernetes/kubernetes/pull/103447), [@trierra](https://github.com/trierra))
  - :pencil: PortworxはPure Storage社のストレージ・ソリューションで，同社製のストレージ・アプライアンス上のストレージと連携する機能のようです．
- `PodAndContainerStatsFromCRI` feature gateが実装され，ユーザが`cAdvisor`ではなくCRI由来のPod Statsを利用することができるようになります． ([#103095](https://github.com/kubernetes/kubernetes/pull/103095), [@haircommander](https://github.com/haircommander))
- pinされたimageのgarbage collectionを行わないように，ユーザが設定できるようになりました． ([#103299](https://github.com/kubernetes/kubernetes/pull/103299), [@wgahnagl](https://github.com/wgahnagl))
- CRIのv1 APIがデフォルトで使われるようになりました．コンテナランタイムがv1 APIをサポートしていない場合は，v1alpha2 APIが利用されます． ([#106501](https://github.com/kubernetes/kubernetes/pull/106501), [@ehashman](https://github.com/ehashman))
- ノードラベルのreconciliationが，フラグ `--node-status-update-frequency`で設定できる間隔で実行されます ([#104613](https://github.com/kubernetes/kubernetes/pull/104613), [@ravisantoshgudimetla](https://github.com/ravisantoshgudimetla))
  - :pencil: ノードのラベル（`kubernetes.io/os`, `kubernetes.io/arch`）が定期的にreconcileされているので，[`podSpec.os`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podos-v1-core) などと照合したpod schedulingが行えるようになりました．
- PodResource API の `GetAllocatableResources` エンドポイントがBetaになり，デフォルトで有効になりました．([#105003](https://github.com/kubernetes/kubernetes/pull/105003), [@swatisehgal](https://github.com/swatisehgal))
  - :pencil: このAPIについては，[v1.21の変更内容共有](https://qiita.com/ryotarai/items/528707facb3341cd1f54#api-change) でryotarai-sanが紹介しているようです．
- `CSIMigrationGCE` フラグがデフォルトで有効になりました．([#104722](https://github.com/kubernetes/kubernetes/pull/104722), [@leiyiz](https://github.com/leiyiz))
- feature `DownwardAPIHugePages` がデフォルトで有効になりました．([#106271](https://github.com/kubernetes/kubernetes/pull/106271), [@mysunshine92](https://github.com/mysunshine92))
  - :pencil: DownwardAPI ([環境変数](https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information) や [Volume](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) によってコンテナ情報をPodに共有する) に，hugepage に関する情報が含まれるようになりました．
- system-validators ライブラリが v1.6.0 になりました ([#106323](https://github.com/kubernetes/kubernetes/pull/106323), [@neolit123](https://github.com/neolit123))

### Bug or Regression
<!--
- A pod that the Kubelet rejects was still considered as being accepted for a brief period of time after rejection, which might cause some pods to be rejected briefly that could fit on the node.  A pod that is still terminating (but has status indicating it has failed) may also still be consuming resources and so should also be considered. ([#104817](https://github.com/kubernetes/kubernetes/pull/104817), [@smarterclayton](https://github.com/smarterclayton)) 
- Add Kubernetes Events to the `Kubelet Graceful Shutdown` feature. ([#101081](https://github.com/kubernetes/kubernetes/pull/101081), [@rphillips](https://github.com/rphillips))
- Add support for Windows Network stats in Containerd ([#105744](https://github.com/kubernetes/kubernetes/pull/105744), [@jsturtevant](https://github.com/jsturtevant))
- Don't prematurely close reflectors in case of slow initialization in watch based manager to fix issues with inability to properly mount secrets/configmaps. ([#104604](https://github.com/kubernetes/kubernetes/pull/104604), [@wojtek-t](https://github.com/wojtek-t))
- Don't use a custom dialer for the kubelet if is not rotating certificates, so we can reuse TCP connections and have only one between the apiserver and the kubelet. If users experiment problems with stale connections using HTTP1.1, they can force the previous behavior of the kubelet by setting the environment variable DISABLE_HTTP2. ([#104844](https://github.com/kubernetes/kubernetes/pull/104844), [@aojea](https://github.com/aojea))
- Enhanced event messages for pod failed for exec probe timeout ([#106201](https://github.com/kubernetes/kubernetes/pull/106201), [@yxxhero](https://github.com/yxxhero))
- Evicted and other terminated Pods will no longer revert to the `Running` phase. ([#105462](https://github.com/kubernetes/kubernetes/pull/105462), [@ehashman](https://github.com/ehashman))
- Fix a regression where the Kubelet failed to exclude already completed pods from calculations about how many resources it was currently using when deciding whether to allow more pods. ([#104577](https://github.com/kubernetes/kubernetes/pull/104577), [@smarterclayton](https://github.com/smarterclayton))
- Fixed an issue which didn't append OS's environment variables with the one provided in Credential Provider Config file, which may fail execution of external credential provider binary. See https://github.com/kubernetes/kubernetes/issues/102750. ([#103231](https://github.com/kubernetes/kubernetes/pull/103231), [@n4j](https://github.com/n4j))
- Fixed occasional pod cgroup freeze when using cgroup v1 and systemd driver. ([#104528](https://github.com/kubernetes/kubernetes/pull/104528), [@kolyshkin](https://github.com/kolyshkin))
- Graceful node shutdown, allow the actual inhibit delay to be greater than the expected inhibit delay. ([#103137](https://github.com/kubernetes/kubernetes/pull/103137), [@wzshiming](https://github.com/wzshiming))
- Kubelet did not report `kubelet_volume_stats_*` metrics for Generic Ephemeral Volumes. ([#105569](https://github.com/kubernetes/kubernetes/pull/105569), [@pohly](https://github.com/pohly))
- Kubelet's Node Grace Shutdown will terminate probes when shutting down ([#105215](https://github.com/kubernetes/kubernetes/pull/105215), [@rphillips](https://github.com/rphillips))
- Kubelet: fixes a file descriptor leak in log rotation ([#106382](https://github.com/kubernetes/kubernetes/pull/106382), [@rphillips](https://github.com/rphillips))
- Kubelet: the printing of flags at the start of kubelet now uses the final logging configuration. ([#106520](https://github.com/kubernetes/kubernetes/pull/106520), [@pohly](https://github.com/pohly))
- Pod SecurityContext sysctls name parameter for update requests where the existing object's sysctl contains slashes and kubelet sysctl whitelist support contains slashes. ([#102393](https://github.com/kubernetes/kubernetes/pull/102393), [@mengjiao-liu](https://github.com/mengjiao-liu))
- Pod will not start when Init container was OOM killed. ([#104650](https://github.com/kubernetes/kubernetes/pull/104650), [@yxxhero](https://github.com/yxxhero))
- PodResources interface was changed, now it returns only isolated CPUs ([#97415](https://github.com/kubernetes/kubernetes/pull/97415), [@AlexeyPerevalov](https://github.com/AlexeyPerevalov))
- Reduce the number of calls to docker for stats via dockershim. For Windows this reduces the latency when calling docker, for Linux this saves cpu cycles. ([#104287](https://github.com/kubernetes/kubernetes/pull/104287), [@jsturtevant](https://github.com/jsturtevant))
- Removed the error message label from the `kubelet_started_pods_errors_total` metric ([#105213](https://github.com/kubernetes/kubernetes/pull/105213), [@yxxhero](https://github.com/yxxhero))
- Respect grace period when updating static pods. ([#104743](https://github.com/kubernetes/kubernetes/pull/104743), [@gjkim42](https://github.com/gjkim42))
- Revert building binaries with PIE mode. ([#105352](https://github.com/kubernetes/kubernetes/pull/105352), [@ehashman](https://github.com/ehashman))
- Reverts the CRI API version surfaced by dockershim to `v1alpha2`. ([#106808](https://github.com/kubernetes/kubernetes/pull/106808), [@saschagrunert](https://github.com/saschagrunert))
- When a static pod file is deleted and recreated while using a fixed UID, the pod was not properly restarted. ([#104847](https://github.com/kubernetes/kubernetes/pull/104847), [@smarterclayton](https://github.com/smarterclayton))
-->

- Kubeletがrejectしたpodがしばらくの間acceptだと考慮されてしまい，ノードにフィットするいくらかのpodがrejectされていました．また，終了中のpod（ただし，failedだと表示されている）もリソースを使ってしまっていたことも考慮されるようになりました． ([#104817](https://github.com/kubernetes/kubernetes/pull/104817), [@smarterclayton](https://github.com/smarterclayton))
- `Kubelet Graceful Shutdown` に関するKubernetes Eventが追加されました ([#101081](https://github.com/kubernetes/kubernetes/pull/101081), [@rphillips](https://github.com/rphillips))
- ContainerdにおけるWindows Networkの統計情報がサポートされるようになりました ([#105744](https://github.com/kubernetes/kubernetes/pull/105744), [@jsturtevant](https://github.com/jsturtevant))
- SecretやConfigMapが正しくマウントできない問題を修正するため，watch based managerの初期化が遅いときにリフレクタを早く終了しないようにします．([#104604](https://github.com/kubernetes/kubernetes/pull/104604), [@wojtek-t](https://github.com/wojtek-t))
- Kubeletにおいて証明書のローテーションを行わない場合，カスタムダイヤラを使用しないようにしてください．そうすることでTCP接続を再利用でき，apiserverとkubelet間に1つの接続が存在するようにできます．もし，ユーザがHTTP/1.1を利用してstaleな接続についての問題を実験したい場合は，kubeletに環境変数 `DISABLE_HTTP2` を設定することで以前の振る舞いを強制することができます．([#104844](https://github.com/kubernetes/kubernetes/pull/104844), [@aojea](https://github.com/aojea))
- exec probe がtimeout した場合のevent messageを改善しました ([#106201](https://github.com/kubernetes/kubernetes/pull/106201), [@yxxhero](https://github.com/yxxhero))
- Evicted や他の terminated なpodが， `Running` phase に戻らないようにします． ([#105462](https://github.com/kubernetes/kubernetes/pull/105462), [@ehashman](https://github.com/ehashman))
- どれだけのリソースが現在使用されていて，いつ，より多くのpodを受け入れることができるのか判断する計算から，Kubeletが既に完了したpodを正しく除くことができていないregressionを修正しました．([#104577](https://github.com/kubernetes/kubernetes/pull/104577), [@smarterclayton](https://github.com/smarterclayton))
- Credential Provider Config fileで与えられた環境変数を追加していなかったことで，外部のcredential provider binaryが正しく実行できていなかった問題を修正しました． https://github.com/kubernetes/kubernetes/issues/102750 を参照ください．([#103231](https://github.com/kubernetes/kubernetes/pull/103231), [@n4j](https://github.com/n4j))
- cgroup v1とsystemd driverを利用しているとき，たまにpodのcgroupがフリーズする問題を修正しました ([#104528](https://github.com/kubernetes/kubernetes/pull/104528), [@kolyshkin](https://github.com/kolyshkin))
- Graceful node シャットダウンによって，期待されるinhibit delayよりも実際のinhibit delayの方が大きくなることを許します． ([#103137](https://github.com/kubernetes/kubernetes/pull/103137), [@wzshiming](https://github.com/wzshiming))
- Kubelet が Generic Ephemeral Volumes に関する `kubelet_volume_stats_*` メトリクスを報告していない問題を修正しました ([#105569](https://github.com/kubernetes/kubernetes/pull/105569), [@pohly](https://github.com/pohly))
- KubeletのNode Grace Shutdownがshutdown時にprobeを終了するようにします ([#105215](https://github.com/kubernetes/kubernetes/pull/105215), [@rphillips](https://github.com/rphillips))
- Kubeletのログローテーションに関するファイルディスクリプタがリークしていたのを修正します ([#106382](https://github.com/kubernetes/kubernetes/pull/106382), [@rphillips](https://github.com/rphillips))
- Kubeletが起動時にフラグを出力するとき，最終的なロギング設定が利用されるようにします ([#106520](https://github.com/kubernetes/kubernetes/pull/106520), [@pohly](https://github.com/pohly))
- Pod SecurityContext の sysctls の名前にスラッシュが入っているのをサポートするようにします．([#102393](https://github.com/kubernetes/kubernetes/pull/102393), [@mengjiao-liu](https://github.com/mengjiao-liu))
- InitコンテナがOOM Killされた場合に，Podがスタートしない．([#104650](https://github.com/kubernetes/kubernetes/pull/104650), [@yxxhero](https://github.com/yxxhero))
- PodResources interface が変更され，isolated CPUsしか返さないようになった．([#97415](https://github.com/kubernetes/kubernetes/pull/97415), [@AlexeyPerevalov](https://github.com/AlexeyPerevalov))
- dockershim経由で統計情報を取得するためdockerを呼び出す回数を減らした．Windows環境においてレイテンシが小さくなり，Linux環境においてはcpu cyclesが削減された．([#104287](https://github.com/kubernetes/kubernetes/pull/104287), [@jsturtevant](https://github.com/jsturtevant))
- `kubelet_started_pods_errors_toral` メトリクスからエラーメッセージラベルを取り除いた ([#105213](https://github.com/kubernetes/kubernetes/pull/105213), [@yxxhero](https://github.com/yxxhero))
- static podsを更新するときに，grace periodが尊重されるようになった ([#104743](https://github.com/kubernetes/kubernetes/pull/104743), [@gjkim42](https://github.com/gjkim42))
- バイナリをPIEモードでビルドするようにしたのをやめた ([#105352](https://github.com/kubernetes/kubernetes/pull/105352), [@ehashman](https://github.com/ehashman))
- dockershim CRI API version を `v1alpha2` に戻した ([#106808](https://github.com/kubernetes/kubernetes/pull/106808), [@saschagrunert](https://github.com/saschagrunert))
- static pod が削除され，固定されたUIDで再作成されたとき，podが正しく再起動されていなかった ([#104847](https://github.com/kubernetes/kubernetes/pull/104847), [@smarterclayton](https://github.com/smarterclayton))

### Other (Cleanup or Flake)
<!--
- Support allocating whole NUMA nodes in the CPUManager when there is not a 1:1 mapping between socket and NUMA node ([#102015](https://github.com/kubernetes/kubernetes/pull/102015), [@klueska](https://github.com/klueska))
- Support for Windows Server 2022 was added to the `k8s.gcr.io/pause:3.6` image. ([#104711](https://github.com/kubernetes/kubernetes/pull/104711), [@claudiubelu](https://github.com/claudiubelu))
- The `StartupProbe` feature gate that is GA since v1.20 is unconditionally enabled, and can no longer be specified via the `--feature-gates` argument. ([#104168](https://github.com/kubernetes/kubernetes/pull/104168), [@ialidzhikov](https://github.com/ialidzhikov))
- The `SupportPodPidsLimit` and  `SupportNodePidsLimit` feature gates that are GA since v1.20 are unconditionally enabled, and can no longer be specified via the `--feature-gates` argument. ([#104163](https://github.com/kubernetes/kubernetes/pull/104163), [@ialidzhikov](https://github.com/ialidzhikov))
- Update `cri-tools` dependency to v1.22.0. ([#104430](https://github.com/kubernetes/kubernetes/pull/104430), [@saschagrunert](https://github.com/saschagrunert))
-->

- socketとNUMAノードの対応が1:1でないとき，NUMAノード全体をCPUManagerにおいて割り当てることができるようにしました ([#102015](https://github.com/kubernetes/kubernetes/pull/102015), [@klueska](https://github.com/klueska))
  - :pencil: 近年のCPUはCPUソケットとNUMAノードが1:1対応していないことがあります．例えばAMD EPYCは各CPUソケット内に複数のメモリコントローラを内蔵しており，各コアから見ると近いメモリコントローラと，遠いメモリコントローラがあります．それを考慮してtask schedulingを行うためにNUMAとしてOSに見せる設定をしている場合は，CPUソケット内に複数のNUMAノードがあることになります．
- `StartupProbe` feature gate は， v1.20からGAしており，無条件に有効です．このfeature gateが指定できなくなりました．([#104168](https://github.com/kubernetes/kubernetes/pull/104168), [@ialidzhikov](https://github.com/ialidzhikov))
- `SupportPodPidsLimit` と `SupportNodePidsLimit` feature gate は，v1.20からGAしており，無条件に有効です．これらのfeature gateが指定できなくなりました． ([#104163](https://github.com/kubernetes/kubernetes/pull/104163), [@ialidzhikov](https://github.com/ialidzhikov))
- `cri-tools` の依存が v1.22.0 に更新されました ([#104430](https://github.com/kubernetes/kubernetes/pull/104430), [@saschagrunert](https://github.com/saschagrunert))