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.35: SIG Storageの変更内容

Last updated at Posted at 2026-01-26

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

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

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

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

:pencil: 所感

SIG Storageは今回も変更自体多くありませんが、下記の変更が新規にリリースされています。

KEP KEP-5538: CSI driver opt-in for service account tokens via secrets field
Status Beta(default=true)
Feature Gate CSIServiceAccountTokenSecrets
Feature Blog Kubernetes v1.35: A Better Way to Pass Service Account Tokens to CSI Drivers
Description ServiceAccount tokenを要求するCSI Driverにtokenを渡す場合に、セキュリティ懸念のあるvolume_contextではなくsecretsフィールドを使って渡すように変更します
Comment CSI Driver実装者向けの変更ですが、利用者としては、自身の利用しているDriverの対応状況をウォッチすると良さそうです
KEP KEP-5030: Integrate CSI Volume attach limits with cluster autoscaler
Status Alpha
Feature Gate VolumeLimitScaling
Feature Blog なし
Description kube-schedulerおよびCluster AutoscalerでCSINodeで定義されるVolume Attach Limitを考慮するように変更。Cluster AutoscalerでScale From Zeroする場合のスケジュール失敗の改善も期待できます
Comment 自身の使っているCluster Providerの対応状況をウォッチすると良さそうです

それ以外の昇格/廃止は以下のとおりです

KEP KEP-4876: Mutable CSINode Allocatable Property
Status Beta(default=true)
Feature Gate MutableCSINodeAllocatableCount
Feature Blog なし
Comment v1.34でBeta(default=false)でしたが、v1.35からBeta(default=true)になりました
KEP KEP-1967: Support to size memory backed volumes
Status GA
Feature Gate 削除
Feature Blog なし
Comment v1.32でGAしていたのでv1.35で削除

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

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

:pencil: ただし、":microscope: Others (その他修正)"セクションで紹介されていますが、storage.k8s.io/v1alpha1 APIからVolumeAttributesClassが削除されています(v1.34で既にGA, storage.k8s.io/v1に昇格)ので、利用している場合は注意が必要そうです。

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

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

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

  • CSIドライバは、CSIDriverオブジェクトのspec.serviceAccountTokenInSecrets: trueを設定することで、ボリュームコンテキストではなくsecretsフィールド経由でサービスアカウントトークンを受信できるようになりました。これにより、トークンがログやその他の出力に誤って公開されるのを防止できます。この機能はCSIServiceAccountTokenSecrets機能ゲートによって制御されています(v1.35ではベータ)。(#134826, @aramase)
    • :pencil: feature blog: Kubernetes v1.35: A Better Way to Pass Service Account Tokens to CSI Drivers
    • :pencil: KEP-5538: CSI driver opt-in for service account tokens via secrets field
    • :pencil: セキュリティの改善です。自身の利用しているCSI Driverの対応状況をウォッチされることをおすすめします。これまで TokenRequests featureを利用しているCSI DriverにServiceAccount tokenが渡される際、通常のvolume parameterが渡される volume_context にServiceAccount tokenも一緒に渡されていました。protosanitizerというツールがあるのですが、volume_contextフィールドを機密情報として扱わないため、gRPCリクエストがログに記録される際に、ServiceAccount tokenが誤ってログに出力される可能性があり、これまでCVE-2023-2878(Secret Store CSI Driver)やCVE-2024-3744(Azure File CSI Driver)といった問題が発生していました。CSI Spec自体にはvolume_contextとは別のsecretsというフィールド(in NodePublishVolumeRequestメソッド)がすでに定義されているため、このフィールドを利用してService Account tokenを渡すようにします。CSI Driver specでのopt-inスタイルでの機能改善なのでいきなりbeta(default=true)です。
  • kube-apiserverにおいて、デフォルトでClearingNominatedNodeNameAfterBinding機能を有効にしました。(#135103, @ania-borowiec)
  • OpenAPI向けのモデルパッケージをzz_generated.model_name.goファイルに生成し、OpenAPIModelName()関数を通じてアクセス可能にしました。これにより、API開発者はGoパッケージパスに依存しないOpenAPIモデルパッケージを直接宣言できるようになります。 (#131755, @jpbetz)
  • Kube-apiserver: CustomResourceDefinitionstatusサブリソースの存在が指定されているにもかかわらず、openAPIV3Schemastatusプロパティが定義されていないカスタムリソースのバリデーション時に発生する可能性があるパニック現象を修正しました。(#133721, @fusida)
  • Kubernetes APIのGoの型定義において、github.com/gogo/protobufライブラリのランタイム使用が削除され、グローバルのgogo registryへの登録も行われなくなりました。Kubernetes APIのGoの定義はgoogle.golang.org/protobufライブラリとの互換性が不十分であるため、意図しない非互換使用を防ぐため、デフォルトでProtoMessage()メソッドを実装しなくなりました。これらのマーカーメソッドの削除が利用環境に影響を与える場合、kubernetes_protomessage_one_more_releaseビルドタグを使用することで、あと1リリース期間のみ再有効化することが可能です。ただし、この機能はv1.36リリース時に完全に削除される予定です。 (#134256, @liggitt)
  • 必要なCSIドライバがインストールされていないノードへPodがスケジュールされるのを修正しました。(#135012, @gnufied)
    • :pencil: KEP-5030: Integrate CSI Volume attach limits with cluster autoscaler
    • :pencil: これまで、kube-scheduler(その内部コードを利用しているCluster Autoscaler)は、
      CSI Nodeがない→CSI Attach Limitがない、という意味で作られているため、Cluster Autoscalerで、特にScale from Zeroの場合に、CSI VolumeがAttachできないかもしれない課題に対する改善(CSI Nodeがpublishされていない→制限なくスケジュールできると判断される→Cluster AutoscalerはそのNodeを作る)。
    • :pencil: このKEP(PR)では、CSI Nodeがない→スケジュールできないに変わる
    • :pencil: Cluster Autoscaler側のScale From ZeroはNode Templateで指定することが提案されている
    • :pencil: 紐づいているCluster Autoscaler側のPR(kubernetes/autoscaler#8721) だと、Cluster APIのNode Template Providerのみが実装されていて、MachineDeploymentcapacity.cluster-autoscaler.kubernetes.io/csi-driver: "ebs.csi.aws.com=25,efs.csi.aws.com=16"みたいなannotationを指定する形になっている。
    • :pencil: 各自自分の使っているCluster Providerでの対応はwatchしておくと良さそう

:sparkle: Features (機能追加)

  • VolumeAttachmentLimitExceededによるポッド拒否のケースのストレステストをkubeletに追加しました(#133357, @torredil)
  • MutableCSINodeAllocatableCountフィーチャーゲートをベータとしてデフォルトで有効にしました(#134647, @torredil)
  • 同一のスケジューリング要件を持つポッドに対して、スケジューリング効率を最適化するためのopportunistic batching(KEP-5598)を実装しました (#135231, @bwsalmon)
  • InformerやControllerが使用するreal-FIFOキューにおいて、ウォッチイベントの処理をバッチ化することで、スループットを向上させました。(#132240, @yue9944882)
    • :pencil: KEP化されていませんが、InOrderInformersBatchProcess feature gate(beta, default=true)があるので無効化は可能です
  • k8s.io/apimachinery: 同一リソースタイプの2つのオブジェクト間で resourceVersion 文字列を比較するための補助関数を導入しました (#134330, @michaelasp)
  • KubernetesはGo 1.25を利用します。これにはhttps://go.dev/blog/container-aware-gomaxprocsも含まれています(#134120, @BenTheElder)
    • :pencil: Go 1.25でリリースされたGOMAXPROCSがコンテナに割り当てられているCPUを見て自動的にセットされる(これまではホストのCPU総数)様になるので嬉しいですね!
  • 基盤となるイメージと依存関係を更新し、Goバージョン1.25.3に合わせました(#134611, @cpanato)

📃 Documentation (ドキュメント)

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

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

  • 同一のPersistentVolumeClaimを参照する複数のVolumeを持つPodに対応しました(#122140, @huww98)
  • SELinux warningコントローラーでSELinuxラベルの競合が発生している場合にイベントを発行していなかった問題を修正しました(#133425, @jsafrane)
  • PersistentVolumeClaims、VolumeAttachments、VolumeAttributesClasses更新時に行われていた重複したバリデーションを修正しました(#132549, @gavinkflam)
  • StaticなPersistentVolumeが作成された際に発生していたスケジュール遅延の問題を修正しました(#133929, @huww98)
  • kubelet: LocalStorageCapacityIsolationFSQuotaMonitoring が有効になっている状態で、空のボリュームを持つポッドを作成する際に発生していた並行マップ書き込みエラーを修正しました (#135174, @carlory)
  • VAC(VolumeAttributeClass)のAPIテストをConformance testに昇格させました(#133615, @carlory)

:microscope: Others (その他修正)

  • テストフレームワークにStepフィールドを追加し、テスト時のボリューム拡張単位を設定できるようにしました(#134760, @Rishita-Golla)
  • md5アルゴリズムを廃止し、より適切なハッシュアルゴリズムの使用を推奨します(#133511, @BenTheElder)
  • k/k/pkg/scheduler/frameworkパッケージ内の以下の型を移動しました:Handle, Plugin, PreEnqueuePlugin, QueueSortPlugin, EnqueueExtensions, PreFilterExtensions, PreFilterPlugin, FilterPlugin, PostFilterPlugin, PreScorePlugin, ScorePlugin, ReservePlugin, PreBindPlugin, PostBindPlugin, PermitPlugin, BindPlugin, PodActivator, PodNominator, PluginsRunner, LessFunc, ScoreExtensions, NodeToStatusReader, NodeScoreList, NodeScore, NodePluginScores, PluginScore, NominatingMode, NominatingInfo, WaitingPod, PreFilterResult, PostFilterResult, Extender, NodeInfoLister, StorageInfoLister, SharedLister, ResourceSliceLister, DeviceClassLister, ResourceClaimTracker, SharedDRAManager
    これらの型はk8s.io/kube-scheduler/frameworkパッケージに移動されました。ユーザーはインポートパスを更新する必要があります。ただし、これらの型のインターフェース自体は変更されていません。
    k/k/pkg/scheduler/framework/parallelismパッケージ内のParallelizerは、インターフェース型Parallelizerk8s.io/kube-scheduler/frameworkパッケージ内)と構造体型Parallelizerk/kパッケージ内の位置は変更なし)に分割されました。プラグイン開発者の方は、インポートパスをステージングリポジトリ用のパスに更新してください(#133172, @ania-borowiec)
  • GAになっているフィーチャーゲート SizeMemoryBackedVolumes を削除しました(#133720, @carlory)
  • v1.35 では、storage.k8s.io/v1alpha1 API から VolumeAttributesClass リソースを削除しました。(#134625, @liggitt)
    • :pencil: すでにv1.34でGA、storage.k8s.io/v1に昇格しているので、利用している人は少ないと思いますがAPIの削除なので念のため注意しておくと良いかもしれません
  • etcdクライアントライブラリをv3.6.5に更新しました(#134780, @joshjms)
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?