VolumeAttributesClass

FEATURE STATE: Kubernetes v1.29 [alpha]

このページでは、Kubernetesのストレージクラスボリュームおよび永続ボリュームについてよく理解していることを前提としています。

VolumeAttributesClassは、管理者がストレージの変更可能な「クラス」を表現する方法を提供します。 異なるクラスは異なるサービス品質レベルに対応する場合があります。 Kubernetes自体は、これらのクラスが何を表すかかについては見解を持っていません。

これはアルファ機能であり、デフォルトで無効化されています。

アルファ機能であるうちにテストしたい場合は、kube-controller-managerおよびkube-apiserverでVolumeAttributesClassフィーチャーゲートを有効化する必要があります。 コマンドライン引数の--feature-gatesを使用します:

--feature-gates="...,VolumeAttributesClass=true"

VolumeAttributesClassはContainer Storage Interfaceをバックエンドとするストレージでのみ使用することができ、 関連するCSIドライバーがModifyVolume APIを実装している場合にのみ使用することができます

VolumeAttributesClass API

各VolumeAttributesClassにはdriverNameparametersが含まれており、 クラスに属する永続ボリューム(PV)を動的にプロビジョニングまたは変更する際に利用されます。

VolumeAttributesClassのオブジェクト名は重要であり、ユーザーが特定のクラスを要求する方法です。 管理者はVolumeAttributesClassのオブジェクトを最初に作成する際に、クラス名や他のパラメータを設定します。 PersistentVolumeClaim内のVolumeAttributesClassのオブジェクト名は変更可能ですが、 既存のクラスのパラメータは変更できません。

apiVersion: storage.k8s.io/v1alpha1
kind: VolumeAttributesClass
metadata:
  name: silver
driverName: pd.csi.storage.gke.io
parameters:
  provisioned-iops: "3000"
  provisioned-throughput: "50" 

プロビジョナー

各VolumeAttributesClassには、PVのプロビジョニングにどのボリュームプラグインを使用するかを決定するプロビジョナが備わっています。

VolumeAttributesClassに関する機能のサポートはkubernetes-csi/external-provisionerに実装されています。

kubernetes-csi/external-provisionerに限定されることはありません。 Kubernetesによって定義された仕様にそった独立したプログラムである、外部プロビジョナを実行、指定することもできます。 外部プロビジョナの作成者は、コードの保存場所、プロビジョナの配布方法、実行方法、使用するボリュームプラグインなど、あらゆる裁量を持っています。

リサイザー

各VolumeAttributesClassには、PVの変更にどのボリュームプラグインを使用するかを決定するリサイザが備わっています。 driverNameフィールドの指定は必須です。

VolumeAttributesClassに関するボリューム変更機能のサポートはkubernetes-csi/external-resizerに実装されています。

例えば、既存のPersistentVolumeClaimがsilverという名前のVolumeAttributesClassを使用しているとします:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pv-claim
spec:
  
  volumeAttributesClassName: silver
  

新しいgoldというVolumeAttributesClassがクラスターで使用可能です:

apiVersion: storage.k8s.io/v1alpha1
kind: VolumeAttributesClass
metadata:
  name: gold
driverName: pd.csi.storage.gke.io
parameters:
  iops: "4000"
  throughput: "60"

エンドユーザーは新しいgoldというVolumeAttributesClassを使ってPVCを更新、適用できます:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pv-claim
spec:
  
  volumeAttributesClassName: gold
  

パラメーター

VolumeAttributesClassにはそれらに属するボリュームを記述するパラメータがあります。 プロビジョナまたはリサイザによって、異なるパラメータを受け取る場合があります。 例えば、パラメータiopsの値4000や、パラメータthroughputはGCE Persistent Disk固有のものです。 パラメータを省略した場合は、デフォルト値がボリュームのプロビジョニング時に使用されます。 ユーザーがパラメータを省略して異なるPVCを適用する場合、CSIドライバーの実装に応じてデフォルトのパラメータが使用されることがあります。 詳細については、関連するCSIドライバーのドキュメントを参照してください。

VolumeAttributesClassには最大512個のパラメータを定義できます。 キーと値を含むパラメータオブジェクトの合計の長さは256KiBを超過することはできません。