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 Storageの変更内容

0
Last updated at Posted at 2026-09-27

Kubernetes 1.37.0がリリースされました🎉

それでは、Kubernetes 1.37.0のCHANGELOGをベースにSIG Storageに関する変更について紹介します。

:pencil: がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

過去 3 リリースの変更内容:

:pencil: 所感

SIG Storageの大きめの変更のとしては

といったところでしょうか。あとは機能の昇格や小さなバグフィックスになります。

下記にDeprecation/Alpha/Beta/GA/GA後のFeatureGate削除についてまとめます。

Deprecation

:pencil: SIG Storage関連のものはありません

Alpha

KEP KEP-5936: Add user fields to atomic write volumes
Status Alpha
Feature Gate AtomicWriteVolumeUserFields(default=false)
Description Atomic Write Volume(ConfigMap, Secret, Downward API, Projectedボリューム)におけるファイルのowner userの指定が可能に
KEP KEP-6030: Dynamic Resize of Memory-Backed Volumes
Status Alpha
Feature Gate InPlacePodVerticalScalingMemoryBackedVolumes(default=false)
Description Pod再スタート/再作成させずに medium: Memory な emptyDir ボリューム(tmpfs)を動的にリサイズ(emptyDir.sizeLimit)できる機能
KEP KEP-5502: EmptyDir Volume Permission Mode
Status Alpha
Feature Gate EmptyDirVolumeMode(default=false)
Description emptyDirボリュームのディレクトリ作成時にmodeフィールドでUnixパーミッションBits(0000-01777)を設定できる機能
KEP KEP-1432: Volume Health Monitor
Status Alpha
Feature Gate CSIVolumeHealth(default=false)
Description これまでevent/metricsでしかexposeしていなかったVolume HealthをAPI(PVC, Pod, CSINode)としてもexposeするように追加実装

Beta

KEP KEP-5030: Integrate CSI Volume attach limits with cluster autoscaler
Status Beta
Feature Gate VolumeLimitScaling(default=true)
Description kube-schedulerおよびCluster AutoscalerでCSINodeで定義されるVolume Attach Limitを考慮するように変更。Cluster AutoscalerでScale From Zeroする場合のスケジュール失敗の改善も期待できます
Comment 自身の使っているCluster Providerの対応状況をウォッチすると良さそうです

GA

KEP KEP-3257: Cluster Trust Bundles
Status GA
Feature Gate ClusterTrustBundle(default=true), ClusterTrustBundleProjection(default=true)

GA済みFeature Gateの削除

KEP KEP-1495: Volume Populators
Feature Gate AnyVolumeDataSource

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

:pencil: SIG Storage関連のものはありません

🔗 Dependency

  • etcdクライアントライブラリが v3.6.10 にアップデートされました。(#138393, @humblec) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling and Storage]

:wastebasket: Deprecation (非推奨になったAPI)

:pencil: SIG Storage関連のものはありません

:earth_asia: API Changes (API周りの変更)

  • AtomicWriteVolumeUserFieldsフィーチャーゲートによる、Atomic Write VolumeにおけるファイルのユーザID指定のアルファサポートを追加しました(disabled by default). (#139764, @gavinkflam) [SIG API Machinery, Apps, Auth, Storage and Testing]
    • :pencil: KEP-5936: Add user fields to atomic write volumes
    • :pencil2: Atomic Write Volume: ファイルの変更内容がPodからAtomicに見えるボリュームで、ConfigMap, Secret Downward API, Project ボリュームのこと
    • :pencil2: これまでroot userがオーナーとして作られていたので、MongoDBやsshd用のhostkeyなど、特定のユーザ所有である必要がある場合は、initContainerを使って所有を変更する必要があったが、このfeatureでspecとして指定できるようになった
      volumes:
      - name: volA
        configMap:
          defaultUser: 1000
          name: cm1
          items:
          - key: foo # Owner=defaultUser
            path: foo
          - key: bar # Owner=user
            path: bar
            user: 1001  
      - name: volB
        secret: # Owner=defaultUser
          defaultUser: 1000
          secretName: secret1
      - name: volC
        secret:
          secretName: secret2
          items:
          - key: moo # Owner=root
            path: moo
          - key: baa # Owner=user
            path: baa
            user: 1000          
      
  • workloadbuilder libraryと Workload building block APIとの統合によって、JobコントローラにWorkload-aware scheduling(WAS)サポートを追加しました (#140188, @helayoty) [SIG API Machinery, Apps, Auth, Network, Node, Scheduling, Storage and Testing]
  • InPlacePodVerticalScalingSchedulerPreemption feature gateが有効な場合に、高優先度な Deferred なin-place Pod resize向けに低優先度のPodをプリエンプションするschedulerのサポートを追加しました(#140000, @natasha41575) [SIG API Machinery, Apps, Node, Scheduling, Storage and Testing]
  • アルファ InPlacePodVerticalScalingMemoryBackedVolumes フィーチャーゲートによる、memory-backedボリュームの動的リサイズのサポートを追加しました (#139425, @natasha41575) [SIG API Machinery, Apps, Autoscaling, CLI, Node, Scheduling, Storage and Testing]
    • :pencil: KEP-6030: Dynamic Resize of Memory-Backed Volumes
    • :pencil: Podを再作成/再スタートせずに medium: Memory な emptyDir ボリューム(tmpfs)を動的にリサイズ(emptyDir.sizeLimit)できる機能
    • :pencil: cgroup v2が必要, cgroup v1では未サポート(Infeasibleとしてreject)
    • :pencil: 通常のIn-Place Pod Updateのresource-fit(Nodeに乗るかどうか?)のチェックではチェックされず、admission checkで失敗するので注意
  • emptyDirボリュームディレクトリ作成時にmodeフィールドによるUnixパーミッションBits(0000-01777)設定のサポートを追加しました。 (#140244, @nispriha) [SIG API Machinery, Apps, Node, Storage and Testing]
  • ボリュームヘルスの報告に必要なAPIの変更を追加しました (#140194, @gnufied) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Instrumentation, Node, Storage and Testing]
    • :pencil: KEP-1432: Volume Health Monitor
    • :pencil: Release Blog: Kubernetes v1.37 Sneak Peek - Volume health monitor
    • :pencil: v1.19(Alpha), v1.21(2nd Alpha)としてリリースしていたVolume Healthの再改修が行われています
    • :pencil: 以前
    • :pencil: 課題
      • eventとmetricsしかなかった
      • 「今の状態」を知るAPIがなためremediationをするにもcontrollerが作りづらい
    • :pencil: 今回
      • Feature Gate(変更無し): CSIVolumeHealth
      • Controller
        • CSIへのメソッドの追加: ControllerListVolumeHealth, ControllerGetVolumeHealth
        • PVC APIの追加: PVC.status.healthStatus
      • Node
        • CSIへのメソッド追加: NodeGetVolumeHealth, NodeGetStorageHealth
        • Pod APIの追加: Pod.status.volumeHealth
          • NodeGetVolumeHealth CSIから取得
        • CSINode APIの追加: CSINode.status.storageHealth
          • NodeGetStorageHealth CSIから取得
  • SchedulerPreQueueingHints Feature Gate(Alpha、デフォルト無効)を追加しました。これを有効にすると、スケジューラープラグインが PreQueueingHintFn を提供できるようになり、クラスタイベント時に評価される Pod のセットを絞り込むことで、スケジューリングのスループットが向上します。DRA プラグインでは、ResourceClaimTemplate をベースとしたワークロードを最適化するためにこれが実装されています。(#138916, @geetasg) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Instrumentation, Network, Node, Scheduling, Storage, Testing and Windows]
  • kube-apiserver の CBOR エンコーダーを変更し、コレクションをまとめてではなく、アイテムごとにエンコードするようにしました。 (#138808, @chenk008) [SIG API Machinery, Apps, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Contributor Experience, Instrumentation, Network, Node, Release, Scalability, Scheduling, Storage, Testing and Windows]
  • ClusterTrustBundle および ClusterTrustBundleProjection Feature Gateを GA に昇格させ、デフォルトで有効化しました。 (#139437, @stlaz) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Node, Storage and Testing]
  • kubeletのボリュームメトリクス(storage_operation_duration_seconds、volume_operation_total_seconds)をAlphaからBetaの安定性に昇格させ、メトリクスを利用するユーザーに対してより強力なAPIおよびラベルの安定性の保証を提供しました。(#136189, @bhope) [SIG Instrumentation and Storage]
  • DRA Device Taints and Tolerations機能をGAに昇格させ、resource.k8s.io/v1 APIを通じて利用できるようにしました。(#138676, @pohly) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Node, Scheduling, Storage and Testing]
  • 必要な CSI ドライバーが存在しないノードへの Pod のスケジューリングを防ぐため、CSIDriver に preventPodSchedulingIfMissing フィールドを追加する VolumeLimitScaling フィールドゲートをBetaに昇格させました。(#140612, @gnufied) [SIG API Machinery, Storage and Testing]
  • v1.33 以降ロックされて有効化されていたGAのFeature Gate AnyVolumeDataSource を削除しました。 (#135336, @carlory) [SIG API Machinery, Apps, Storage and Testing]
  • APIのGo言語の型定義において、インライン展開された TypeMeta フィールドのJSONタグを ",inline" から "" に変更しました。inline はJSONシリアライザで認識されるオプションではなく、JSONのシリアライズ(エンコード)やデシリアライズ(デコード)の動作に影響を与えませんでした。 (#138260, @liggitt) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • client-go: 呼び出し元がコンテキストを渡すAPIを導入することにより、ほぼすべての context.TODO 呼び出しを削除しました。ログ出力には、利用可能な場合に呼び出し元から提供されたロガーを使用します。 (#129125, @pohly) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Instrumentation, Network, Node, Storage and Testing]

:sparkle: Features (機能追加)

  • EtcdRangeStream Beta Feature Gateを追加しました。ウォッチキャッシュが、ページネーションを使用する従来の Range リクエストではなく、単一の RangeStream RPC を使用して etcd からオブジェクトをストリーミングすることで初期化されるようになります。 (#136915, @Jefftree) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • オブジェクト走査用に遅延評価とゼロアロケーションを実現したリフレクションベースのユーティリティを採用することで、CEL アドミッションポリシーの評価を最適化しました。これにより、リクエスト処理中の CPU 使用率とガベージコレクションのオーバーヘッドが大幅に削減されます。 (#138771, @lalitc375) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Network, Node, Scheduling and Storage]
  • クラスターイベントリソースである「Pod」に、「AssignedPod」「UnscheduledPod」「TargetPod」という3つの異なるサブタイプを追加しました。パフォーマンス向上のため、プラグインは特定の Pod イベントに登録することが可能であり、またそれが期待されています。 (#135905, @iomarsayed) [SIG Node, Scheduling, Storage and Testing]
  • ボリュームマウントのホストパターンの型不一致エラーにおいて、期待されるパスの型に加えて実際のパスの型もログに出力するように更新しました。 (#121873, @skitt) [SIG Storage]
    • :pencil: volumes.hostPath.type: Directoryなのに指定されていたpathがファイルだった時のログの改善
      • 前: hostPath type check failed: /var/lib/mydata is not a directory
      • 後: hostPath type check failed: /var/lib/mydata is not a directory, it's a file

📃 Documentation (ドキュメント)

:pencil: SIG Storage関連のものはありません

:fire: Failing Test

:pencil: SIG Storage関連のものはありません

:bug: Bug or Regression (バグ修正)

  • SELinuxのメトリック発行時における、コストの高い比較処理を回避しました。(#138981, @gnufied) [SIG Apps and Storage]
    • :pencil: 同じVolumeを複数のContainerから異なるSELinux labelを指定してmountする(conflict)する際にWarningメトリクスを発砲しますが、これまではmetric を scrape するたびにVolumexPod の組み合わせを全部再計算していたのをキャッシュを導入して高速する変更です
  • 初回のPVCバインディング時に、PVCプロテクションコントローラーとPVバインダーの間で発生していた409 Conflictエラーを修正しました。「Unused」条件は、PersistentVolumeClaimがバインドされた後にのみ評価されます。(#140833, @huww98) [SIG Apps and Storage]
    • :pencil: KEP-5541: Report Last Used Time on a PVCの機能のバグ修正
    • :pencil: PVC protection controllerとPV binderが PVC.status.conditions[.type=Unused]を同時に更新していたのを修正 → PVC protection controllerではBoundになるまでUnused conditionの評価をスキップすることでconflictが発生しないように修正
  • VolumeAttachmentのバリデーションを修正し、エラーメッセージ内で正しい最大メッセージサイズ(1024バイト)が報告されるようにしました。(#136436, @Okabe-Junya) [SIG Storage]
  • 複数のStorageClassにdefaultのアノテーションが付与されている場合、kubectl get storageclass が有効なデフォルトのStorageClassのみを「(default)」として表示するように修正しました。(#135964, @jaehanbyun) [SIG CLI and Storage]
    • :pencil: 仕様的には「最も新しく作成された」ものが有効ですが複数のStorage Classに(default)がついてしまっていたのを修正
  • FUSEまたはGlusterFSのネットワークファイルシステムの障害発生後、subPath マウントを持つPodがエラーの無限ループに陥る可能性があった kubelet の問題を修正しました。(#139275, @yuehaii) [SIG Node, Storage and Testing]
  • Server-Side Applyにおけるリグレッションを修正しました。コンテナ型(listまたはmap)のパッチ適用時に、以前は成功していたアプライリクエストに対して 422 required エラーが返される問題を修正しています。(#140294, @jpbetz) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • 定期的な NodePublishVolume 呼び出し(CSIDriver.spec.requiresRepublish を true に設定することでトリガーされる)がエラーを返した際に、kubelet がCSIマウントディレクトリを削除してしまい、Podに古いボリュームコンテンツが残った結果、その後の再パブリッシュ成功でも修復できなくなる問題を修正しました。(#139045, @aramase) [SIG Storage]
    • :pencil: 再マウントの際にエラーになった時にマウントポイントを消してしまっていたバグ。既存のPodには古い内容が見えたままになっていた。CSI Mounterに再マウントかどうかを渡すようにしして修正
  • MakeMountArgsSensitiveWithMountFlags からのログ文字列出力に含まれていた、重複したマウント引数を修正しました。(#138098, @jeffbearer) [SIG Storage]
  • Podが CreateContainerConfigError の状態でスタックしたままにするのではなく、コンテナの再起動時に(古いNFSファイルハンドルなどの)破損したサブパスマウントポイントから kubelet が回復できるように修正しました。(#138856, @RomanBednar) [SIG Storage]
    • :pencil: NFSでsubPathマウントしているディレクトリを一旦消して同名で作り直したりするときになる"Stale file handle"になった場合に、subPath mountを再作成するようにして復帰するように修正

:microscope: Others (その他修正)

:pencil: SIG Storage関連のものはありません

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?