0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

0
Last updated at Posted at 2026-09-28

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

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

所感 :pencil:

今回の Kubernetes 1.37 の SIG-Node (kubelet) の変更内容で、印象に残ったいくつかの機能を紹介します。

Alpha: Pod-level checkpoint / restore に向けた CRI API の導入

KEP-5823

checkpoint / restore は実行中のコンテナや Pod の状態を保存し、あとで復元する仕組みです。
これまでも Kubernetes では コンテナ単位の checkpoint が提供されてきました。
コンテナ単位の checkpoint では、kubelet に checkpoint を取得する API POST /checkpoint/{namespace}/{pod}/{container} があり、CRI の CheckpointContainer RPC と組み合わせてコンテナ単位の checkpoint を取得することができました。
コンテナ単位の checkpoint から restore する専用の kubelet API や RestoreContainer RPC はなく、対応するランタイムにて OCI イメージアノテーションを介した方法で復元することができました。

本 KEP では、Pod 全体を checkpoint / restore する仕組みを提案しています。
CRI の CheckpointPod と RestorePod を利用してコンテナランタイムとの連携を行い、Kubernetes API を通じてこれらの機能をユーザに提供することを目指しています。
1.37 ではその土台として、CRI に CheckpointPod と RestorePod RPC が追加されました。
kubelet がこれらの RPC を呼ぶ実装や、ユーザが操作するための Kubernetes API はまだ追加されていません。

Beta: Pods API

ノード上で動く CNI プラグインや監視ツール向けの PodsAPI が、1.37 で Beta になりました。
これは Unix ドメインソケット上の gRPC API で、API server を経由せず、kubelet が管理する Pod の情報を取得できます。
特定の Pod の取得や一覧に加え、Pod の変化を継続して受け取ることもできます。(#140286、API リファレンス)
Kubelet が管理する Pod の情報を直接取得でき、ノードが Kubernetes API Server にアクセスできない場合でも、Kubelet が把握している最新の Pod 状態を取得できます。

名前の似た PodResources API というものも以前から存在していました。
こちらも同様に Unix ドメインソケット上の gRPC API ですが、こちらが返すのは Pod の情報全般ではなく、CPU やメモリ、デバイスなどの割り当て情報です。
1.37 では Pod 単位の cpu_ids と memory が追加され、Pod 共有の割り当てをコンテナ単位の値から推測せずに取得できるようになりました。(#138738)

DRA Updates

1.37 の DRA 関連の変更点については、公式ブログ が詳しく解説しています。特に印象に残ったところのみ補足します。

  • DRADeviceCompatibilityGroups では、同じ共有カウンターを使うデバイスに、DRA driver が互換性グループを宣言できます。たとえば同じ GPU の MIG と vGPU のように同時利用できない組み合わせを、ノードでのデバイス準備に失敗してからではなく、スケジューリング時点で排除します。Alpha で、feature gate はデフォルト無効です。(#139795)
  • resource.kubernetes.io/numaNode が DRA デバイスの標準属性名として追加されました。対応する driver がこの属性を公開すれば、GPU と NIC など異なる driver のデバイスの NUMA 情報を比較できます。AMD EPYC 9005 の資料によると、NPS4 では各 NUMA ドメインに CPU コアとメモリコントローラが対応し、PCIe デバイスは接続先の I/O ダイの区画に応じてローカルな NUMA ドメインが決まります。KEP-6072 のリスト形式は、主にこうした PCIe デバイスについて、ローカルな NUMA node だけでなく、同じソケット内で距離の近いほかの NUMA node も表します。CPU やメモリは通常、対応する NUMA node を単一の番号で表します。NUMA 条件で比較する際は、リストに共通の番号があればデバイスを組み合わせられます。属性名の標準化自体は Stable ですが、リスト形式の利用には別の Alpha 機能 DRAListTypeAttributes を有効にする必要があります。(#139929)
  • DRADerivedAttributes では、driver ごとに異なる属性名や表現を、ResourceClaim 内の CEL 式で共通の属性に写像できます。標準属性名に対応していない driver のデバイスを組み合わせたい場合にも利用できます。(#140029)
  • DRANodeAllocatableResources では、DRA デバイスが消費するホスト側の CPU・メモリなどを、通常のリソース要求と同様にスケジューラと kubelet が計上する方向に進みました。これにより、CPU・メモリなどをホストとDRA デバイスの両方で二重に使用してしまうことを防ぐことができます。1.37 時点では Alpha 2 の機能です。(#140009)

以下は Kubernetes 1.37 の CHANGELOG の和訳です。

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

  • ACTION REQUIRED: SELinuxMount feature gate が GA に昇格した。v1.37 ではデフォルトで有効になり、SELinux を有効にしたクラスタの既存ワークロードに障害が生じる可能性がある。Kubernetes のブログ記事を参照し、v1.36 クラスタで問題が生じ得るワークロードを特定し、修正する方法、または v1.37 への更新前に SELinuxMount の変更を opt-out する方法を確認すること。SELinux を有効にしていないクラスタの管理者は、このリリースノートを無視してよい。(#139956、@jsafrane) [SIG API Machinery, Apps and Node]
  • ACTION REQUIRED: kubelet 設定の eventRecordQPS において、ドキュメントに合わせ、0 を無制限(レート制限なし)として扱うよう修正した。従来のデフォルト動作に依存していた場合は、50 などの非ゼロ値を明示的に設定すること。(#117119、@HirazawaUi) [SIG API Machinery, Auth and Node]
  • ACTION REQUIRED: kubelet が起動時に実際に有効な設定をログに出力するようにした。ログに設定の詳細が含まれる可能性があるため、クラスタ管理者は nodes/logs ClusterRole を信頼できるユーザーに限定すること。これは主に従来からのベストプラクティスの再確認である。実効設定の大半は、ほかのログメッセージや kubelet の動作からも推測できる。(#139837、@SergeyKanzhelev) [SIG Node]

Changes by Kind

Dependency

  • kubelet に組み込まれた cAdvisor を、より軽量な github.com/google/cadvisor/lib モジュールに変更した。これにより、長く非推奨だった、または旧来の次の三種類の機能が削除された。(#139870、@dims) [SIG API Machinery, Auth, Instrumentation, Network, Node and Testing]
    • 非推奨の cAdvisor フラグは受け付けなくなり、いずれかを指定すると kubelet は起動に失敗する。維持されるのは --housekeeping-interval のみ。削除対象は --application-metrics-count-limit、--boot-id-file、--container-hints、--containerd、--containerd-namespace、--enable-load-reader、--event-storage-age-limit、--event-storage-event-limit、--global-housekeeping-interval、--log-cadvisor-usage、--machine-id-file、--storage-driver-user、--storage-driver-password、--storage-driver-host、--storage-driver-db、--storage-driver-table、--storage-driver-secure、--storage-driver-buffer-duration。これらを kubelet の設定から削除すること。
    • cAdvisor のアプリケーション/カスタムメトリクスは収集されなくなる。対象は /stats/summary の userDefinedMetrics フィールドと、/metrics/cadvisor のカスタム container_application_* ファミリー。
    • /metrics/cadvisor の container_cpu_load_average_10s、container_cpu_load_d_average_10s、container_tasks_state 系列は公開されなくなる。

Deprecation

SIG Node 関連はなし。

API Change

  • デフォルトで無効の DRADeviceCompatibilityGroups feature gate により、DRA デバイス互換性グループの Alpha サポートを追加した。DRA ドライバは ResourceSlice の各 device.consumesCounters[] エントリに不透明な compatibilityGroups を宣言できる。スケジューラは、同じカウンター集合を消費するデバイスを同時に割り当てる際、宣言されたグループに共通部分がある場合だけ割り当てる。これにより、互換性のない組み合わせを準備時の失敗ではなくスケジューリング時の拒否として検出できる。(#139795、@omeryahud) [SIG API Machinery, Node, Scheduling and Testing]
  • Pod 単位の checkpoint と restore のため、CRI v1 RuntimeService API に CheckpointPod と RestorePod RPC を追加した。(#140366、@rst0git) [SIG Node, Testing and Windows]
  • デフォルトで無効の DRAResourcePoolStatus feature gate のもと、DRA リソース可用性の可視化(KEP-5677)の第2段階の Alpha を追加した。ResourcePoolStatusRequest controller は partitionable および consumable デバイスを正しく集計し、各デバイスを1回だけ数え、AdminAccess を無視し、taint のあるデバイスを利用不可として扱う。オプショナルのフィールドで partition と shareable の可用性を記述する。このアカウンティングの修正により、報告値は v1.36 から変わる。(#140170、@nmn3m) [SIG API Machinery, Apps, Auth, Node and Testing]
  • DRA デバイスメタデータ v1alpha1 API を利用する Go コード向けに、宣言的バリデーション関数を生成した。(#140687、@alaypatel07) [SIG Node]
  • DRA に DerivedAttributes を追加した。claim 内で CEL 式を使って仮想属性を定義し、デバイス制約に利用できる。たとえば、ドライバが物理属性を異なる方法で公開していても、同じ NUMA node 上の GPU と NIC など、異なるドメインのデバイスを一緒に割り当てられる。(#140029、@gauravkghildiyal) [SIG API Machinery, Node, Scheduling and Testing]
  • Alpha の InPlacePodVerticalScalingMemoryBackedVolumes feature gate のもと、memory-backed ボリュームを動的にリサイズできるようにした。(#139425、@natasha41575) [SIG API Machinery, Apps, Autoscaling, CLI, Node, Scheduling, Storage and Testing]
  • emptyDir ボリュームディレクトリの作成時に、mode フィールドで Unix パーミッションビット(0000~01777)を指定できるようにした。(#140244、@nispriha) [SIG API Machinery, Apps, Node, Storage and Testing]
  • コンテナごとのボリュームマウントに bind mount オプション(noexec、nodev、nosuid)を指定できるようにした。(#140013、@nispriha) [SIG API Machinery, Apps, Autoscaling, Node, Scheduling and Testing]
    • :pencil: たとえば同じボリュームをアプリには通常どおりマウントし、別のコンテナには noexec を付けてマウントできます。volumeMounts[].bindMountOptions を使う Alpha 機能で、VolumeBindMountOptions feature gate と対応するコンテナランタイムが必要です。
  • ボリュームの健全性を報告するために必要な API 変更を追加した。(#140194、@gnufied) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Instrumentation, Node, Storage and Testing]
  • Alpha の DefaultPodSysctls feature gate(デフォルト無効)のもと、Linux ノードにおける Pod sysctl のデフォルト値を指定する DefaultPodSysctls kubelet 設定フィールドを追加した。(#140052、@VeraQin) [SIG Node and Testing]
  • Node ライフサイクル条件に GracefulNodeShutdownInProgress、DrainInProgress、Drained、MaintenancePlanned、MaintenanceInProgress を追加した。(#139993、@rthallisey) [SIG Apps and Node]
  • DRA に Alpha の DRAOptionalNodeOperations サポートを追加した。ResourceSlice と ResourceClaim の SkipNodeOperations フィールドにより、ノードレベルの準備処理とクリーンアップ処理を省略できる。(#139933、@troychiu) [SIG API Machinery, Autoscaling, Instrumentation, Node, Release, Scheduling and Testing]
  • DRA の CapacityRequestPolicyRange を修正し、ミリスケールの小数 quantity をサポートした。(#140161、@sunya-ch) [SIG API Machinery, Node and Scheduling]
  • Pod status で報告される Linux コンテナユーザー UID の検証を修正し、2147483647 を超え、符号なし32ビット UID の上限までの値を受け入れるようにした。(#138574、@Kunalbehbud) [SIG Apps and Node]
  • KubeletInUserNamespace feature gate を Beta に昇格した。(#134639、@AkihiroSuda) [SIG API Machinery, Apps, Node and Testing]
  • MemoryQoS feature gate を Beta に昇格した。memoryThrottlingFactor のデフォルト値は nil であり、明示的に設定しない限り memory.high は設定されない。(#140007、@QiWang19) [SIG Node and Testing]
    • :pencil: Beta でも既定の kubelet 設定では memory.high によるスロットリングは始まらず、memory.min / memory.low による保護も memoryReservationPolicy: None のため有効になりません。両者は別々の設定です。メモリ保護の仕組みは v1.36 の SIG-Node 記事 を参照してください。
  • NodeDeclaredFeatures feature gate を GA に昇格した。(#139763、@pravk03) [SIG Apps, Autoscaling, Node, Scheduling and Testing]
  • C++ マクロとの衝突を避けるため、cri-api の signal enum キーを改名した。api.proto 定義では SIGNAL_ が接頭辞として付く。wire format は変わらない。(#139251、@SergeyKanzhelev) [SIG Apps, Node and Testing]
  • CDI spec のバージョンを動的に選択するよう変更し、互換性のない CDI spec の生成を防いだ。(#137699、@alaypatel07) [SIG Apps, Node, Scheduling and Testing]
  • Pod-level resource の扱いを変更し、Pod resource に request または limit が含まれる場合だけ QoS の判定に使うようにした。空の Pod resource({}、{requests:{}}、{limits:{}})は QoS 計算に影響しなくなった。(#137150、@KevinTMtz) [SIG Apps, CLI, Node and Scheduling]
  • Alpha の DRANodeAllocatableResources 機能を更新した。(#140009、@pravk03) [SIG API Machinery, Apps, Auth, Autoscaling, Node, Scheduling and Testing]
    • ResourceSlice の mapping と PodStatus は、CPU・メモリ・hugepage をリソースとして扱う DRA ドライバの直接割り当て、およびアクセラレータのホスト overhead に使う overhead 割り当てに対応する。
    • kubelet は Pod / コンテナの cgroup、OOM score、Memory QoS threshold を設定するとき、DRA で割り当てられたリソースを計上する。
    • DRA claim を使う Pod では、標準的な resource request と limit を in-place resize できる。
    • スケジューラは参照のない Pod-level claim をサポートし、DRA を含めて resource limit を強制し、claim 共有ルールを適用する。overhead 割り当てについては Pod 間の claim 共有を許可する。
    • validation は更新後の API 制約を強制し、node declared features を使って、対象 Node で NodeAllocatableDRA feature gate が有効であることを確認する。
  • kubelet: gRPC コンテナ probe の TLS 対応を追加した(feature gate のもとで提供)。(#137762、@amritansh1502) [SIG API Machinery, Apps, Node and Testing]

Feature

  • PodResources v1 API に Pod 単位の cpu_ids と memory フィールドを追加し、Pod に割り当てられたリソースの合計を報告できるようにした。一方、コンテナ単位の割り当ては、コンテナごとにリソースが分離されているコンテナについてのみ返す。(#138738、@KevinTMtz) [SIG Node and Testing]
    • :pencil: ノード上の exporter などが Pod 単位の割り当てを観測する際、コンテナ別の値を足し合わせるのではなく、Pod 単位のフィールドを参照できます。Pod で共有するリソースとコンテナごとに分離したリソースを区別するための変更です。
  • Alpha の kubelet メトリクスとして kubelet_pod_deferred_resize_duration_seconds histogram を追加し、kubelet_pod_pending_resizes gauge に priority_bucket label を追加した。(#140122、@natasha41575) [SIG Instrumentation and Node]
  • Pod admission 時の Pod-Level Resources(KEP-2837)の利用状況を追跡する Alpha の kubelet メトリクス pod_level_resources_admission_total を追加した。リソースの設定モードと QoS class ごとに分類して記録する。(#140463、@ndixita) [SIG Instrumentation and Node]
  • kubelet に allocatedPods endpoint を追加した。この endpoint は kubelet が割り当て済みと認識している Pod spec を公開し、in-place Pod resize やその他の Pod 更新に関する問題のデバッグに利用できる。KubeletAllocatedPodsEndpoint feature gate が必要。(#140856、@tallclair) [SIG Node and Testing]
    • :pencil: in-place resize の調査では、API server に保存された「希望する spec」と、kubelet が保持する「割り当て済み spec」を見比べると、変更がどこまで反映されたかを確認できます。1.37 で追加されたのは kubelet の endpoint で、Pod の /allocated subresource は後続の変更です。
  • DRA driver 向けに、標準デバイス属性 resource.kubernetes.io/numaNode と sysfs ベースの helper 関数を追加した。(#139929、@johnahull) [SIG Node]
  • node を unhealthy と判定する前に live GET で lease が古くなっていることを確認するよう node の健全性チェックを改善し、古い cache による誤判定を避けた。(#138698、@michaelasp) [SIG Apps, Auth and Node]
  • Pod status の更新で DRA 関連フィールド resourceClaimStatuses、extendedResourceClaimStatus、nodeAllocatableResourceClaimStatuses が省略されても、これらのデータを保持するようにした。古い client からの更新で DRA フィールドが消去され、Pod が永続的に Terminating のままになる事態を防ぐ。(#139876、@ashishpatel26) [SIG API Machinery, Auth, Node, Scheduling and Testing]
  • DRAResourceClaimDeviceStatus feature gate を GA に昇格した。(#137546、@LionelJouin) [SIG Node and Testing]
  • InPlacePodVerticalScalingInitContainers feature gate を GA に昇格した。(#140728、@natasha41575) [SIG Apps and Node]
  • PLEGOnDemandRelist feature gate を GA に昇格した。(#140805、@tallclair) [SIG Node]
  • PodAndContainerStatsFromCRI feature gate を Beta に昇格した。デフォルトでは無効。(#140081、@dgrisonnet) [SIG Node]
  • PodLevelResourceManagers feature gate を Beta に昇格し、デフォルトで有効にした、 (#140573、@KevinTMtz) [SIG Node and Testing]
    • :pencil: ただし、後続の #141209 によりデフォルト無効となった。
  • PodReadyToStartContainers condition を GA に昇格した。(#140488、@Priyankasaggu11929) [SIG Node and Testing]
  • kubelet の PodsAPI gRPC service を Beta に昇格した。(#140286、@briansonnenberg) [SIG Instrumentation, Node and Testing]
    • :pencil: ノード上の CNI プラグインや監視ツールが Unix socket 経由で Pod 情報を取得するための API です。API server を経由せず、ローカルの Pod 状態を参照できます。
  • EventedPLEG の対象範囲を、予期しない container の終了を迅速に検出する用途だけに縮小した。(#139262、@HirazawaUi) [SIG Node]
  • cri-tools を v1.36.0 に更新した。(#138613、@saschagrunert) [SIG Cloud Provider and Node]
  • kubelet の設定 flag と関連する fallback 動作の deprecation の削除時期を、containerd v1.7 のサポートに合わせて v1.37 から v1.38 に延期した。(#139121、@carlory) [SIG Node and Testing]

Documentation

SIG Node 関連はなし。

Failing Test

SIG Node 関連はなし。

Bug or Regression

  • kubelet のログ関連 endpoint に明示的な HTTP method 制限を適用した。読み取り専用の kubelet server endpoint は GET 以外を 405 で拒否し、NodeLogQuery は GET と POST のみを許可してそれ以外を 405 で拒否する。(#138088、@amritansh1502) [SIG Node]
  • DRA で、ResourceClaim の informer 更新をまれに見逃すと、unschedulable queue が flush されるまで Pod が Pending のままになる問題を修正した。(#140831、@pohly) [SIG Node and Scheduling]
  • リリース前に重大な問題が見つかったため、PodLevelResourceManagers feature gate をデフォルトで無効にした。(#141209、@SergeyKanzhelev) [SIG Node]
  • ListTypeAttributes feature gate が無効でも、kube-scheduler で list 型属性、.includes 関数、CEL macro を評価できるようにした。rolling upgrade 中や feature gate の切り替え時にエラーが発生することを防ぐ。(#139395、@everpeace) [SIG Node]
  • DRA の structured allocator が候補を評価する際に device の共有カウンターを誤って数える問題を修正した。候補の却下や backtrack の後もカウンターの予約を保持したり、共有 device の使用中 marker を消して後の割り当てでカウンターを二重に計上したりしていた。これにより、満たせる resource 要件を持つ node 上でもカウンターが枯渇したと誤判定し、Pod が Pending になることがあった。デフォルトの feature 構成で使用される allocator に影響した。(#140431、@thc1006) [SIG Node]
  • in-place Pod resize 中に Pod 単位の MemoryQoS memory protection(memory.min と memory.low)が黙って失われる問題を修正した。PodLevelResources feature gate が有効な場合には、Pod 単位の memory.high も適用する。(#140262、@sohankunkerkar) [SIG Node and Testing]
  • Windows で WindowsCPUAndMemoryAffinity feature gate のもと、CPU Manager の static policy と Memory Manager の両方が有効な場合の CPU affinity を修正した。container は選択された NUMA node の全 CPU と CPU Manager が割り当てた CPU set の和集合ではなく、割り当てられた CPU set のみに固定される。以前の動作では他の container に排他的に割り当てられた CPU と重複することがあった。(#139684、@zylxjtu) [SIG Node]
  • DecodeMetadataFromStream は未知の API version の entry だけを skip し、対応する version の decode 失敗や不正な metadata ではエラーを返すようにした。データが黙って失われることを防ぐ。(#138530、@alaypatel07) [SIG Node]
  • 異なる resource の device plugin が同一 ID の device を公開した場合、kubelet が device health 更新を誤った Pod status に適用する問題を修正した。影響を受ける Pod は、次の定期 Pod sync を待たずに device health の変更が status に反映される。(#140323、@harche) [SIG Node]
  • cadvisor plugin がないため ZFS 上で kubelet を起動できない問題を修正した。(#138587、@BenTheElder) [SIG Node]
  • DRA の consumable capacity scheduling で、共有カウンターを消費する device に、消費容量ゼロの永続化済み共有割り当てがある場合、カウンターを二重に計上する問題を修正した。これにより同じ device に対する後続 claim が誤って拒否され、Pod が Pending になることがあった。(#140437、@thc1006) [SIG Node and Scheduling]
  • 外部から削除された ResourceSlice を、driver の更新と削除のタイミングによって DRA driver が再作成しないことがある問題を修正した。(#140063、@pohly) [SIG API Machinery, Apps, Node and Testing]
  • DRA の partitionable device で、driver が公開した int64 の有効範囲外の counter が informer cache 内で変更され、将来の Pod 割り当てが誤って失敗する問題を修正した。(#140518、@weizhoublue) [SIG Node]
  • DRA structured allocator が共有カウンターの cache を pool 名だけで識別していた問題を修正した。同一 node 上の異なる二つの driver が同じ pool 名を使うと、一方の counter 定義が他方に使われ、後者の device 割り当てが誤って受理または拒否されることがあった。(#140435、@thc1006) [SIG Node]
  • DRA scheduler が、相互に排他的な device partition を複数の Pod に割り当ててしまう問題を修正した。SharedCounters(DRAPartitionableDevices)と multi-allocatable device(DRAConsumableCapacity)を併用する DRA driver に影響した。device と driver によっては、誤った二重割り当てが workload failure、device conflict、crash、data loss につながる可能性があった。(#139040、@ashvindeodhar) [SIG Node]
  • Pod sandbox を再作成するとき、以前の sandbox の main container が container runtime にまだ認識されていると、kubelet が init container を skip する問題を修正した。(#138514、@chez-shanpu) [SIG Node]
  • FUSE または GlusterFS の network filesystem 障害後、subPath mount のある Pod がエラーループから抜けられなくなる kubelet の問題を修正した。(#139275、@yuehaii) [SIG Node, Storage and Testing]
  • Pod sync のたびに context が leak することで生じた v1.36 の kubelet memory leak 回帰を修正した。(#139850、@compumike) [SIG Node]
  • maxParallelImagePulls を 31 より大きく設定すると、image pull credential の検証時に kubelet が panic する問題を修正した。(#138937、@RajvardhanPatil07) [SIG Node]
  • Pod の graceful termination が始まると exec readiness probe の実行が「context canceled」で止まり、終了処理中の Pod の Ready condition が固定される v1.35 の回帰を修正した。(#140882、@karlkfi) [SIG Node]
  • 約 30 文字を超える名前の driver で、plugin registration socket の path が AF_UNIX の長さ制限を超え、DRA の kubelet plugin helper で rolling update を有効にできない問題を修正した。rolling update 用 socket は、設定された registry directory に収まる最短の basename を選び、<driver>-<Pod UID>-reg.sock、<driver>-<hashed UID>-reg.sock、dra-<hashed driver+UID>-reg.sock の順に優先する。(#139623、@vishalanarase) [SIG Node and Testing]
  • kernel の階層的な protection model に必要な祖先側の coverage が親 cgroup にないため、Burstable Pod の memory.low による soft protection が効かない問題を修正した。(#140267、@sohankunkerkar) [SIG Node and Testing]
  • 複数の claim を使う Pod で、Pod の .status.resourceClaimStatuses が一部の claim しか含まないリストの間を揺れ動く問題を修正した。(#138408、@johnbelamaric) [SIG Apps and Node]
  • ResourceClaim を共有する PodGroup の Pod が、その ResourceClaim を利用できない Node に scheduling される問題を修正した。(#140089、@nojnhuh) [SIG Node, Scheduling and Testing]
  • multi-node claim と per-node claim の両方を使用する Pod が Pending のままになる問題を修正した。(#139017、@johnbelamaric) [SIG Node and Scheduling]
  • consumable capacity を持つ allocationMode: All の ResourceClaim で、該当 device の残容量が不足している場合に一部だけ割り当てられる問題を修正した。該当する全 device を満たせるようになるまで、その claim の割り当ては正しく失敗する。(#140769、@kiarashazarnia) [SIG Node]
  • MemoryQoS feature gate を無効にしても container ごとの memory.high cgroup 値が消えず、古い制限による throttling が続く問題を修正した。(#139377、@sohankunkerkar) [SIG Node and Testing]
  • DRAListTypeAttributes feature gate を有効にすると、有効な組み合わせがあるのに device を割り当てられない問題を修正した。list 型属性値を使う matchAttribute 制約で複数 device を割り当てる際、allocator が backtrack する必要がある場合に発生していた。(#140325、@everpeace) [SIG Node and Scheduling]
  • Pod 内の image volume ごとに kubelet が毎秒 Event を生成する問題を修正した。(#138655、@mdbooth) [SIG Node]
  • admission されなかった Pod が短時間だけ allocated budget に計上され、妥当なサイズの Pod に対しても不要な admission failure が生じる問題を修正した。(#139522、@haircommander) [SIG Node]
  • Windows で複数の subPath volume mount を持つ Pod が Terminating のままになる問題を修正した。subPath の準備時に file handle が leak して volume cleanup が妨げられていた。(#138367、@timmy-wright) [SIG Node, Testing and Windows]
  • kubelet の node shutdown manager が失敗を繰り返すと D-Bus 接続を leak し、最終的に thread 枯渇と crash に至る問題を修正した。(#137141、@harche) [SIG Node]
  • restartable init container(sidecar container)に対して kubelet が container ごとの ephemeral-storage limit を適用せず、宣言した limit を超えても Pod が eviction されない問題を修正した。(#138462、@shachartal) [SIG Node and Testing]
  • DRA consumable capacity の validRange にある step、min、max、default の値が負数または 9223372036854775807 超の場合、ゼロ除算による panic と ResourceSlice admission validation の誤判定が発生する問題を修正した。(#140666、@thc1006) [SIG Node]
  • DRAConsumableCapacity feature gate が有効で、capacity request policy の validRange.step を 0 にすると ResourceSlice validation が panic する問題を修正した。(#139698、@wilmerdooley) [SIG Node]
  • kubelet の PrepareResources が、同時に unprepare 中の ResourceClaim に Pod を結び付け、未準備の device を使う Pod が動作し続ける race を修正した。(#140527、@bart0sh) [SIG Node]
  • MemoryQoS feature gate を一度有効にした後で無効化すると、kubelet が古い cgroup v2 の memory.min と memory.low を消さない回帰を修正した。(#138903、@sohankunkerkar) [SIG Node and Testing]
  • DRA consumable capacity の scheduler で、高精度の小数(細かい分数値や int64 範囲外の値など)として保存された device capacity requirement を持つ ResourceSlice が、割り当て中に informer cache 内で変更される問題を修正した。この変更により、後続の Pod への割り当てが誤って失敗することがあった。(#140702、@weizhoublue) [SIG Node]
  • ResourceClaim status に同じ configuration entry が重複して報告される問題を修正した。(#139732、@LionelJouin) [SIG Node]
  • DRA consumable-capacity allocator の capacity accounting を修正した。device の整数または milli-value の範囲の算術で表せない request、または負の値になる request は、満たせると誤判定して device を割り当てたり要求値を小さく丸めたりせず、拒否する。(#140442、@thc1006) [SIG Node]
  • Node status の ephemeral-storage capacity に DecimalSI format を使い、capacity と allocatable の format が異なる問題を修正した。(#137652、@0xMH) [SIG Node]
  • Windows の memory eviction threshold notifier で GetPerformanceInfo() が失敗すると nil pointer dereference が発生する問題を修正した。(#138727、@rzlink) [SIG Node]
  • DRA kubelet plugin helper が listener を起動できず、古い Unix domain socket の削除に失敗した際、listen error を繰り返す代わりに socket 削除失敗の理由を報告するようにした。(#141105、@thc1006) [SIG Node]
  • cri-api の KeyValue の value field の JSON encoding を v1.34 より前の動作に戻し、以前の release との互換性を回復した。(#139964、@liggitt) [SIG Node]
  • hugepage を持つ node で、kubelet eviction manager が memory.available を計算する際、AvailableBytes から hugepage 用に予約された RAM を除外するようにした。利用可能 memory の過大報告による eviction の遅延と OOM kill を修正する。HugepageAwareEviction feature gate はデフォルト有効で、無効にすると従来の動作に戻せる。(#138127、@jingczhang) [SIG Node and Testing]
  • PodReadyToStartContainers condition の status が False のとき、Pod sandbox が準備できていない理由(たとえば「pod sandbox has no IP address」「no pod sandbox exists」)を示す diagnostic message を追加した。node log にアクセスせずに、ContainerCreating で止まった Pod を調査しやすくする。(#135300、@harche) [SIG Node]
  • image pull が失敗した場合に限り、kubelet が FailedToRetrieveImagePullSecret Event を出すようにした。(#138432、@Jamstah) [SIG Node]
  • optional な container annotation が存在しない場合に、kubelet が V(4) の「Label not found」log を出さないようにした。(#140163、@HirazawaUi) [SIG Node]
  • 部分的に失敗した PrepareResources を再試行すると、kubelet / DRA が重複した CDI device ID を CRI runtime に渡し、container の起動に失敗することがある問題を修正した。(#140274、@bart0sh) [SIG Node]
  • DefaultPodSysctls feature で user.* sysctl を評価する際、spec.hostUsers が未設定なら true とみなすよう kubelet を変更した。(#140892、@weizhoublue) [SIG Node]
  • kubelet の context が cancel されたら eviction manager の monitoring goroutine が速やかに終了するようにし、shutdown 時の goroutine leak を修正した。(#138854、@alexmchughdev) [SIG Node]
  • kubelet: cgroup v2 の readback から得た Pod 単位の CPU request が status に誤って報告される問題を修正した。(#137660、@pacoxu) [SIG Node]
  • node が登録された後、kubelet が node Event の involvedObject.uid を可能な範囲で設定し、たとえば kubectl describe node で UID により Event を関連付けられるようにした。UID は一度だけ解決し、その後は更新しない。kubelet が動作したまま node が削除・再作成され UID が変わった場合、kubelet を再起動するまで Event には旧 UID が使われる。(#139921、@harche) [SIG Node]
  • MemoryQoS が有効な場合に、BestEffort container にも cgroup v2 memory.high を設定するよう kubelet を変更した(KEP-2570 に基づく)。(#138139、@amritansh1502) [SIG Node]

Other (Cleanup or Flake)

  • ResourceClaim の configuration がすべての request に適用される場合、config status の requests field を空にするようにした。(#139731、@LionelJouin) [SIG Node]
  • DRAPrioritizedList feature gate をデフォルト有効に固定した。Prioritized List feature は v1.36 で GA に達しており、無効化できなくなった。(#139110、@mortent) [SIG Node, Scheduling and Testing]
  • Pod を削除すると、別の Pod がまだ使用している resource を kubelet DRA が unprepare してしまう問題を修正した。(#140212、@bart0sh) [SIG Node]
  • extended resource(たとえば nvidia.com/gpu)を使う Pod の synthesized ResourceClaim へのアクセスを node が拒否され、container が ContainerCreating で止まる可能性がある理論上の問題を修正した。実際の発生は観測されていない。(#138792、@dims) [SIG Auth and Node]
  • NUMA distance 情報を公開していない Windows node で prefer-closest-numa-nodes policy option が有効な場合、kubelet Topology Manager の error message を明確にし、その node では option がサポートされないことを説明するようにした。(#139760、@zylxjtu) [SIG Node]
  • static Pod に無効な priority または priorityClassName が指定された場合、kubelet が warning を log に出すようにした。(#136705、@sreeram-venkitesh) [SIG Node]
  • RelaxedDNSSearchValidation feature gate を削除した。(#139217、@adrianmoisey) [SIG Apps, Node and Testing]
  • 複数の ResourceClaim を扱う DRA e2e test から KubeletMinVersion label を削除した。(#138001、@rogowski-piotr) [SIG Node and Testing]
  • PreventStaticPodAPIReferences feature gate を削除した。static Pod は API resource を参照できず、この動作を無効化できなくなった。(#140226、@sreeram-venkitesh) [SIG Node]
  • v1.33 から常に有効だった SidecarContainers feature gate を削除した。(#137755、@HirazawaUi) [SIG Apps, Node, Scheduling and Testing]
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?