本記事は,Kubernetes 変更内容共有会(v1.25) の SIG-Node(kubelet)に関する資料として準備されました.Kubernetes 1.25の CHANGELOG から,SIG-Nodeに関するところを抜粋して紹介します.
は筆者(@y1r96)による補足です.
所感
PSP が削除された程度で,特に大きな変更はないようです.
feature gate CheckpointRestore
はコンテナの状態を保存できる面白い機能のようですが,現状はフォレンジック用途に限定されているようで,Kubernetes 内でのrestoreができないようで,今後の開発に期待したいです.
Urgent Upgrade Notes
SIG-Nodeに関するものはとくにありません.
Changes by Kind
Deprecation
- seccomp アノテーション
seccomp.security.alpha.kubernetes.io/pod
,container.seccomp.security.alpha.kubernetes.io
は v1.19 から非推奨になりましたが,部分的に削除されました.Kubelet はこのアノテーションをサポートしませんし,static pod でもサポートしませんし,seccomp フィールドのあるpodの場合にもアノテーションが自動で埋められることはありません.アノテーションから seccomp フィールドを自動で埋める機能は v1.27 で削除予定なので,pod はsecurityContext.seccompProfile
をかわりに使用する必要があります. (#109819, @saschagrunert) [sig/node,sig/auth,sig/apps,sig/testing] - ベータの
PodSecurityPolicy
admission plugin は v1.21 から非推奨でしたが,削除されました. 手順 に従って,PodSecurity
admission plugin かサードパーティのpolicy webhook に移行してください. (#109798, @liggitt) [sig/storage,sig/node,sig/api-machinery,sig/auth,sig/apps,sig/instrumentation,sig/testing,sig/cloud-provider,sig/security]
API Change
- Persistent Volume, StorageClass, RuntimeClass, CSIStorageCapacity における node beta label を使用すると,非推奨警告が表示されるようになりました. (#108554, @pacoxu) [sig/storage,sig/node,sig/testing]
-
node beta label とは,次のラベルです
beta.kubernetes.io/arch
beta.kubernetes.io/os
failure-domain.beta.kubernetes.io/region
failure-domain.beta.kubernetes.io/zone
beta.kubernetes.io/instance-type
-
node beta label とは,次のラベルです
- Feature gate
CheckpointRestore
が checkpoint container をサポートするために追加されました.有効な場合は,新しい kubelet API(/checkpoint/{podNamespace}/{podName}/{containerName})
を使用して,containerのcheckpointを取ることができます. (#104907, @adrianreber) [SIG Node and Testing] [sig/node,sig/testing]- KEPはこちらです.コンテナが脅威に感染した場合など,コンテナの現在の状態を保存してサンドボックス内で解析するような用途を目指して開発されているようです.ディスクだけではなくメモリ状態も保全されるようです.
- UpdateContainerResources CRI API が Linux と Windows でサポートされました. (#111645, @vinaykul) [sig/node]
- KEPはこちらです. これにより In-Place Pod Vertical Scaling が実現できます.
- Local Storage Capacity Isolation 機能が v1.25 で GA しました.root filesystemをチェックできないようなrootless systemの場合は, kubelet config の
--local-storage-capacity-isolation=false
を使用してこの機能を無効にしてください.無効にすると,podは local ephemeral storage の request/limit, emptyDir の sizeLimit を設定できなくなります. (#111513, @jingxu97) [sig/scalability,sig/scheduling,sig/node,sig/api-machinery]- 解説記事はこちら.ephemeral storage や empty dir の使用量を追跡して管理することができます.
-
PodSecurity
admission plugin 機能が v1.25 で GA しました.configuration version はpod-security.admission.config.k8s.io/v1
になりました (#110459, @wangyysde) [sig/storage,sig/node,sig/api-machinery,sig/cluster-lifecycle,sig/auth,sig/cli,sig/instrumentation,sig/testing,sig/architecture,sig/cloud-provider] - Ephemeral Containers 機能が v1.25 で GA しました.対応する feature gate は非推奨になり,将来のリリースで削除されます.(#111402, @verb) [sig/storage,sig/node,sig/api-machinery,sig/apps,sig/testing]
Feature
- cpu manager の
static
ポリシーにalign-by-socket
オプションが追加されました.これを有効にすることで,NUMAノードによる境界のかわりに,CPUソケットの単位で CPU が align されるようになります. (#111278, @arpitsardhana) [sig/node]- KEPはこちら. 近年のCPUは,1ソケット内に複数のNUMAをもつことがあります.
- container probe duration metrics が追加されました.(#104484, @jackfrancis) [sig/node,sig/instrumentation]
-
メトリクス名は
probe_duration_seconds
です.
-
メトリクス名は
-
ProbeTerminationGracePeriod
feature gate がデフォルトで有効になりました.(#108541, @kerthcet) [sig/node] - SeccompDefault 機能が
beta
に昇格しました. kubelet feature gate はデフォルトで有効で,configuration/CLI フラグはデフォルトfalse
です. (#110805, @saschagrunert) [SIG Node and Testing] [sig/node,sig/testing] - Pod SecurityContext と PodSecurityPolicy が sysctl のセパレータとして / をサポートするようになりました.(#106834, @mengjiao-liu) [SIG Apps, Architecture, Auth, Node, Security and Testing] [sig/node,sig/auth,sig/apps,sig/testing,sig/architecture,sig/security]
- LocalStorageCapacityIsolationFSQuotaMonitoring 機能が
beta
に昇格しました. (#107329, @pacoxu) [sig/node,sig/testing] - cAdvisor が v0.45.0 に更新されました. (#111647, @bobbypage) [sig/node]
Documentation
なし
Failing Test
なし
Bug or Regression
- Ephemeral Volume が拡大できるようになりました (#109987, @gnufied) [SIG Node and Storage] [sig/storage,sig/node]
- 終了した container のメトリクスを報告しないようになりました (#110950, @yangjunmyfm192085) [SIG Node] [sig/node]
- CRI実装がcAdvisor stats providerを利用する場合,ログがephemeral storage limitを超えた場合にpodをevictしていなかったバグを修正しました (#108115, @haircommander) [SIG Node] [sig/node]
- CSI ephemeral volume の 再構築に関するバグを修正しました (#108997, @dobsonj) [SIG Node, Storage and Testing] [sig/storage,sig/node,sig/testing]
- いくらかのケースにおいてpod が終了状態かつreadyであると apiserver に kubelet が通知してしまっていたバグを修正しました (#110256, @bobbypage) [sig/node,sig/testing]
- Windows node において
HostProcess
な コンテナが正しく作成されていなかったバグを修正しました (#110140, @marosset) [sig/node,sig/windows] - dbus daemonの再起動後, "dbus: connection closed by user" エラーが発生していたバグを修正しました (#110496, @kolyshkin) [sig/node]
- s.RuntimeCgroups エラー条件と誤ったログ出力を修正しました (#110648, @yangjunmyfm192085) [sig/node]
- Kubelet: volume metric collection が長すぎる場合のログを追加しました (#107490, @pacoxu) [sig/storage,sig/node]
- Kubelet: plugin registration mechanism において Windows node の Unix domain socket を確認する処理にリトライを追加しました (#110075, @luckerby) [sig/node,sig/windows]
- Kubelet: --node-labels オプションで付与されるラベルの検証を追加し,正しくないラベルについてはエラーになるようになりました (#109263, @FeLvi-zzz) [sig/node]
- Kubelet: node allocatable ephemeral-storage データの取得の信頼性を向上させました (#101882, @jackfrancis) [sig/storage,sig/node]
- Kubelet は host の
resolv.conf
のsearch .
を正しくハンドルするようになりました (#109441, @Miciah) [SIG Network and Node] [sig/network,sig/node] - Podは終了中に
readiness
を報告するようになりました (#110191, @rphillips) [sig/network,sig/node,sig/testing] - Kubelet の run 関数が異常終了した場合エラーログを出力します (#110691, @yangjunmyfm192085) [sig/node]
- node のアノテーション
alpha.kubernetes.io/provided-node-ip
は--cloud-provider=external
のときだけではなく,任意のcloud-provider
が指定されている時に設定されるようになります (#109794, @mdbooth) [SIG Network and Node] [sig/network,sig/node] - terminal pod (つまり
Unready
かSucceeded
なpod) は, pod phase lifecycle によって巻き戻ることはなく,全てのコンテナが終了しているので,常にunreachableです.よって,TolerateUnready
のオプションによらず常にpublishしないことにします (#110255, @robscott) [sig/network,sig/node,sig/apps,sig/testing] - kubelet の再起動後にマウント操作が失敗した場合でも、reconstructed volumeに対して正しくunmountされたvolume (#110670, @gnufied) [sig/storage,sig/node]
- cAdvisor を v0.44.1 に更新して,いくらかのケースにおいて kubelet によって生成された pod network stats が空である問題を修正しました (#109658, @bobbypage) [sig/node]
- Windows において runAsNonRoot が設定されている場合に,
ContainerAdministrator
の ユーザ名チェックが case-insensitive になった (#111009, @marosset) [sig/node,sig/windows,sig/testing] - メトリクスがカウントされるときに,containerのStartTime メトリクスが異常なものを無視するようになった (#110880, @yangjunmyfm192085) [SIG Instrumentation and Node] [sig/node,sig/instrumentation]
- Windows の kubelet plugin Watcher が想定通り動くようになった (#111439, @claudiubelu) [sig/node,sig/windows,sig/testing]
Other (Cleanup or Flake)
- Kubelet の非推奨フラグ
--experimental-kernel-memcg-notification
が削除されたので代わりに--kernel-memcg-notification
を使用してください (#109388, @ialidzhikov) [sig/node] - Kubelet: エラー時にフラグの出力をしないようになった (#110728, @howardjohn) [sig/node]
- Kubernetesのバイナリが
GOPATH
モードの代わりにビルトインのmodule
モードでビルドされるようになった (#109464, @liggitt) [sig/node,sig/testing,sig/architecture] - Kubelet はcAdvisorを使ってアクセラレータのメトリクスを出力しないようにする feature gate
DisableAcceleratorUsageMetrics
がGA し,disable できなくなりました (#110940, @pacoxu) [sig/node] - cri-tools が v1.24.2 に更新されました (#109813, @saschagrunert) [sig/node,sig/release,sig/cloud-provider]