Block Storage for VPC のセットアップ
Block Storage for VPC は、VPC でプロビジョンできる仮想サーバー・インスタンス用に、ハイパーバイザーにマウントされた高性能データ・ストレージを提供するものです。
ワークロードの要件を満たす GB サイズと IOPS を考慮して、事前定義されたストレージ層の中から選択できます。 Block Storage for VPCがストレージの選択肢として適切かどうかを確認するには、ストレージ・ソリューションの選択を参照してください。 料金設定情報については、 Pricing for Block Storage for VPCを参照してください。
Block Storage for VPC クラスター・アドオンは、VPC クラスターではデフォルトで有効になっています。
IBM Cloud Block Storage for VPC のクイック・スタート
このクイックスタートガイドでは、PVCを作成してボリュームを動的にプロビジョニングすることで、クラスタ内に 10Gi 5IOPS 層 Block Storage for VPC ボリュームを作成します。 その後、その PVC をマウントするアプリ・デプロイメントを作成します。
Block Storage for VPC のボリュームは、それらのポッドが同じノードでスケジュールされている限り、複数のポッドでマウントすることができます。
-
PVC のファイルを作成し、
pvc.yaml
という名前を付けます。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
-
クラスター内に PVC を作成します。
kubectl apply -f pvc.yaml
-
PVC をバインドしたら、その PVC を使用するアプリ・デプロイメントを作成します。 デプロイメントのファイルを作成し、
deployment.yaml
という名前を付けます。apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: ngnix # Your containerized app image. name: my-container volumeMounts: - name: my-volume mountPath: /mount-path volumes: - name: my-volume persistentVolumeClaim: claimName: my-pvc
-
クラスター内にデプロイメントを作成します。
kubectl apply -f deployment.yaml
詳しくは、以下のリンクを参照してください。
アプリへの Block Storage for VPCの追加
Block Storage for VPCのプロファイルを選択し、Block Storage for VPCをクラスターに動的にプロビジョンするための永続ボリューム請求を作成します。 動的プロビジョニングでは、対応する永続ボリュームが自動的に作成され、お客様の IBM Cloud アカウントで物理ストレージ・デバイスが注文されます。
-
容量とパフォーマンスの要件に最も適した Block Storage for VPCのプロファイルを決定します。
-
その Block Storage for VPCのプロファイルに対応するストレージ・クラスを選択します。
IBM のすべての事前定義ストレージ・クラスは、デフォルトでは、
ext4
ファイル・システムを使用して Block Storage for VPCをセットアップします。xfs
やext3
などの別のファイル・システムを使用するには、カスタマイズしたストレージ・クラスを作成してください。- 10 IOPS/GB:
ibmc-vpc-block-10iops-tier
またはibmc-vpc-block-retain-10iops-tier
- 5 IOPS/GB:
ibmc-vpc-block-5iops-tier
またはibmc-vpc-block-retain-5iops-tier
- 3 IOPS/GB:
ibmc-vpc-block-general-purpose
またはibmc-vpc-block-retain-general-purpose
- カスタム:
ibmc-vpc-block-custom
またはibmc-vpc-block-retain-custom
- 10 IOPS/GB:
-
Block Storage for VPCの構成を決定します。
- ストレージのサイズを選択します。 選択した Block Storage for VPCのプロファイルでそのサイズがサポートされることを確認してください。
- クラスターまたは永続ボリューム請求 (PVC) が削除された後もデータを保持するかどうかを選択します。
- データを保持する場合、
retain
ストレージ・クラスを選択します。 PVC を削除すると、PVC のみが削除されます。 永続ボリュームと、IBM Cloud アカウント内の物理ストレージ・デバイスと、データは残ります。 ストレージを回収し、クラスターで再使用するには、PV を削除し、既存の Block Storage for VPC を使用する手順に従う必要があります。 - PVC を削除するときに PV、データ、物理 Block Storage for VPC デバイスが削除されるようにするには、
retain
なしのストレージ・クラスを選択します。
- データを保持する場合、
-
永続ボリューム請求を定義した構成ファイルを作成し、YAML ファイルとして構成を保存します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <pvc_name> # Enter a name for your PVC. spec: accessModes: - <access-mode> # ReadWriteOnce or ReadWriteOncePod resources: requests: storage: 10Gi # Enter the size. Make sure that the size is supported in the profile that you chose. storageClassName: <storage_class> # Enter the storage class name that you selected earlier.
-
クラスター内に PVC を作成します。
kubectl apply -f pvc.yaml
-
PVC が作成され、PV にバインドされたことを確認します。 この処理には数分かかる場合があります。
kubectl describe pvc <pvc_name>
出力例
Name: mypvv Namespace: default StorageClass: ibmc-vpc-block-5iops-tier Status: Bound Volume: Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"csi-block-pvc-good","namespace":"default"},"spec":{... volume.beta.kubernetes.io/storage-provisioner: vpc.block.csi.ibm.io Finalizers: [kubernetes.io/pvc-protection] Capacity: 10Gi Access Modes: VolumeMode: Filesystem Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ExternalProvisioning 9s (x3 over 18s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "vpc.block.csi.ibm.io" or manually created by system administrator Mounted By: <none>
-
アプリのデプロイメント構成ファイルを作成し、PVC をアプリにマウントします。
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment_name> labels: app: <deployment_label> spec: selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - image: <image_name> name: <container_name> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: <pvc_name>
labels.app
- metadata セクションで、デプロイメントのラベルを入力します。
matchLabels.app
およびlabels.app
- spec の selector セクションおよび template の metadata セクションで、アプリのラベルを入力します。
image
- 使用するコンテナー・イメージの名前を指定します。 IBM Cloud Container Registry アカウント内の使用可能なイメージをリストするには、
ibmcloud cr image-list
を実行します。 name
- ポッドにデプロイするコンテナーの名前を指定します。
mountPath
- containers の volumeMounts セクションで、コンテナー内で PVC がマウントされるディレクトリーの絶対パスを指定します。
name
- containers の volumeMounts セクションで、ポッドにマウントするボリュームの名前を入力します。 希望する名前を入力できます。
name
- volumes セクションで、ポッドにマウントするボリュームの名前を入力します。 通常、この名前は
volumeMounts.name
と同じです。 claimName
- volumes の persistentVolumeClaim セクションで、先ほど作成した PVC の名前を入力します。
-
クラスター内にデプロイメントを作成します。
kubectl apply -f deployment.yaml
-
PVC がアプリに正常にマウントされていることを確認します。 ポッドが Running 状態になるまでに数分かかることがあります。
アプリのデプロイメント中に、CLI 出力の
Unable to mount volumes
Events** セクションに ** エラーが断続的に表示される場合があります。 Block Storage for VPC クラスタアドオンは、ストレージをアプリケーションにマウントする処理を自動的に再試行します。 ストレージがアプリにマウントされるまで数分待ってください。kubectl describe deployment <deployment_name>
出力例
... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: mypvc ReadOnly: false
既存の Block Storage for VPC・インスタンスの使用
クラスターで使用したい既存の物理 Block Storage for VPC デバイスがある場合は、PV と PVC を手動で作成して、そのストレージを静的にプロビジョンすることができます。
1 つのボリュームは 1 台のワーカー・ノードにのみ接続できます。 接続を成功させるために、ボリュームがワーカー・ノードと同じゾーンにあることを確認してください。
-
VPC クラスター内のワーカー・ノードに接続するボリュームを決定します。 ボリューム ID をメモします。
ibmcloud is volumes
-
ボリュームの詳細をリストします。 サイズ、ゾーン、および IOPS をメモします。 これらの値を PV の作成に使用します。
ibmcloud is volume <volume_id>
-
VPC クラスターのワーカー・ノードのリストを取得します。 ストレージ・ボリュームと同じゾーンにあるワーカー・ノードのゾーンをメモします。
ibmcloud ks worker ls -c <cluster_name>
-
オプション: ストレージ・クラス
retain
を使用して物理 Block Storage for VPC・インスタンスをプロビジョンした場合は、PVC を削除しても、PV と物理ストレージは削除されません。 物理 Block Storage for VPC・デバイスをクラスターで使用するには、まず既存の PV を削除する必要があります。-
クラスター内の PV をリストし、Block Storage for VPC・デバイスに属する PV を探します。 PV は
released
状態になっています。kubectl get pv
-
PV を削除します。
kubectl delete pv <pv_name>
-
-
PV の構成ファイルを作成します。 先ほど確認した ID、サイズ、ゾーン、IOPS を指定します。
apiVersion: v1 kind: PersistentVolume metadata: name: <pv_name> # Example: my-persistent-volume spec: accessModes: - ReadWriteOnce capacity: storage: <vpc_block_storage_size> # Example: 20Gi csi: driver: vpc.block.csi.ibm.io fsType: ext4 volumeAttributes: iops: "<vpc_block_storage_iops>" # Example: "3000" volumeId: <vpc_block_storage_ID> # Example: a1a11a1a-a111-1111-1a11-1111a11a1a11 zone: "<vpc_block_zone>" # Example: "eu-de-3" region: "<vpc_block_region>" volumeHandle: <vpc_block_storage_ID> nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: failure-domain.beta.kubernetes.io/zone operator: In values: - <worker_node_zone> # Example: eu-de-3 - key: failure-domain.beta.kubernetes.io/region operator: In values: - <worker_node_region> # Example: eu-de - key: kubernetes.io/hostname operator: In values: - <worker_node_primary_IP> persistentVolumeReclaimPolicy: Retain storageClassName: "" volumeMode: Filesystem
name
- metadata セクションで、PV の名前を入力します。
storage
- spec の capacity セクションで、先ほど確認したBlock Storage for VPC・ボリュームのサイズをギガバイト (Gi) 単位で入力します。 例えば、デバイスのサイズが 100 GB の場合は
100Gi
と入力します。 iops
- spec の csi の volumeAttributes セクションで、先ほど確認したBlock Storage for VPC・ボリュームの最大 IOPS を入力します。
zone
- spec の csi の volumeAttributes セクションで、先ほど確認した場所と一致する VPC ブロック・ゾーンを入力します。 例えば、場所が
Washington DC-1
の場合は、ゾーンとしてus-east-1
を使用します。 使用可能なゾーンをリストするには、ibmcloud is zones
を実行します。 使用可能な VPC ゾーンと場所の概要については、 別のリージョンでの VPC の作成を参照してください。 「zone」が指定されている場合は、「region」パラメーターを指定してください。 region
- ストレージを接続する対象のワーカー・ノードのリージョン。
worker_node_primary_IP
- ストレージの接続先となるワーカー・ノードの プライマリー IP。 ワーカー・ノードの プライマリー IP は、
ibmcloud ks worker ls
を実行して確認できます。 volumeId
およびspec.csi.volumeHandle
- spec の csi の volumeAttributes セクションで、既に取得したBlock Storage for VPC・ボリュームの ID を入力します。
storageClassName
- spec の storageClassName には、空の文字列を入力します。
matchExpressions
- spec の nodeAffinity セクションで、ゾーンに一致するノード・セレクターの用語を入力します。 キーには
failure-domain.beta.kubernetes.io/zone
と入力します。 値には、ストレージを接続するワーカー・ノードのゾーンを入力します。 matchExpressions
- spec の nodeAffinity セクションで、リージョンに一致するノード・セレクターの用語を入力します。 キーには
failure-domain.beta.kubernetes.io/region
と入力します。 値には、ストレージを接続するワーカー・ノードのリージョンを入力します。
-
クラスターに PV を作成します。
kubectl apply -f pv.yaml
-
クラスター内に PV が作成されたことを確認します。
kubectl get pv
-
別の PVC 構成ファイルを作成します。 前の手順で作成した PV と一致する PVC にするために、ストレージ・サイズとアクセス・モードに同じ値を選択する必要があります。 ストレージ・クラスのフィールドには、PV と一致する空の文字列値を入力します。 これらのフィールドのいずれかがPVと一致しない場合、ダイナミックプロビジョニングにより、新しいPVと Block Storage for VPC インスタンスが自動的に作成されます。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <pvc_name> spec: accessModes: - ReadWriteOnce resources: requests: storage: <vpc_block_storage_size> storageClassName: ""
-
PVC を作成します。
kubectl apply -f pvc.yaml
-
PVC が作成され、先ほど作成した PV にバインドされたことを確認します。 この処理には数分かかる場合があります。
kubectl describe pvc <pvc_name>
- PVC を使用するデプロイメントまたはポッドを作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: <deployment_name>
labels:
app: <deployment_label>
spec:
selector:
matchLabels:
app: <app_name>
template:
metadata:
labels:
app: <app_name>
spec:
containers:
- image: <image_name>
name: <container_name>
volumeMounts:
- name: <volume_name>
mountPath: /<file_path>
volumes:
- name: <volume_name>
persistentVolumeClaim:
claimName: <pvc_name>
nodeSelector:
kubernetes.io/hostname: "<worker_node_primary_IP>"
Block Storage for VPC クラスター・アドオンの更新
addon update
コマンドを使用して、 Block Storage for VPC クラスター・アドオンを更新できます。
アドオンを更新する前に、変更ログを確認してください。
以前のリリースから「5.x
リリースにアップデートする前に、「failure
状態のボリューム・スナップショットを持っていてはなりません。 詳細については、Block Storage for VPCボリュームスナップショットリソースを削除できない理由 を参照してください。
-
更新が使用可能かどうかを確認します。 更新が使用可能な場合は、プラグインのバージョンにアスタリスクのフラグが付けられ、最新バージョンが表示されます。 最新バージョンの値を後で使用するのでメモしてください。
ibmcloud ks cluster addons --cluster <cluster_name_or_ID>
出力例
Name Version Health State Health Status vpc-block-csi-driver 1.0.0* (2.0.0 latest) normal Addon Ready
-
アドオンを更新します。 更新コマンドは、インストールしたバージョンによって異なることに注意してください。
5.0 以降
addon update
コマンドを実行します。ibmcloud ks cluster addon update vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
バージョン 5.0 アドオンを無効にして有効にします。
ibmcloud ks cluster addon disable vpc-block-csi-driver --cluster CLUSTER [-f] [-q]
ibmcloud ks cluster addon enable vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
-
アドオンが
Addon Ready
状態になったことを確認します。 アドオンの準備ができるまで数分かかる場合があります。ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
出力例
Name Version Health State Health Status vpc-block-csi-driver 2.0.0 normal Addon Ready
ibmc-vpc-block-10iops-tier
ストレージ・クラス以外のデフォルト・ストレージ・クラスを使用する場合は、addon-vpc-block-csi-driver-configmap
構成マップのデフォルト・ストレージ・クラス設定を変更する必要があります。 詳しくは、デフォルト・ストレージ・クラスの変更を参照してください。 -
デフォルトの Block Storage for VPC ストレージクラスを基に独自のストレージクラスを作成した場合は、パラメータを更新するために、それらのストレージクラスを再作成する必要があります。 詳細については、 バージョンを更新した後に独自のストレージクラスを再作成する方法( 4.2 )を参照してください。
バージョン 4.2 への更新後の独自のストレージ・クラスの再作成
バージョン 4.2 では、ストレージ・クラスのデフォルト・パラメーターが変更されました。 sizeRange
パラメーターまたは iopsRange
パラメーターは使用されなくなりました。 これらのパラメータを使用する独自のストレージクラスを作成した場合は、これらのパラメータを削除するために独自のストレージクラスを編集する必要があります。 ご自身のストレージクラスのパラメータを変更するには、それらを削除して再作成する必要があります。
以前は、sizeRange
および iopsRange
が参照情報として各ストレージ・クラスに提供されていました。 バージョン 4.2 では、これらの参照は削除されました。 ブロック・ストレージのプロファイル、サイズ、および IOPS については、ブロック・ストレージ・プロファイルのリファレンスを参照してください。
-
ご自身のストレージクラスの詳細を確認するには、以下のコマンドを実行してください。
kubectl describe sc STORAGECLASS
-
ストレージ・クラスが
sizeRange
またはiopsRange
を使用する場合は、ストレージ・クラス YAML を取得してファイルに保存します。kubectl get sc STORAGECLASS -o yaml
-
前のコマンドの出力から保存したファイルで、
sizeRange
パラメーターまたはiopsRange
パラメーターを削除します。 -
クラスターからストレージ・クラスを削除します。
kubectl delete sc STORAGECLASS
-
先に作成したファイルを使用して、クラスター内にストレージ・クラスを再作成します。
kubectl apply -f custom-storage-class.yaml
Block Storage for VPC 用の暗号化のセットアップ
IBM® Key Protect などの鍵管理サービス (KMS) プロバイダーを使用して、ストレージに書き込まれるデータを暗号化するために Block Storage for VPC インスタンスで使用する秘密ルート鍵を作成します。 プライベートルートキーを作成したら、ルートキーを使用して独自のストレージクラスまたは Kubernetes シークレットを作成し、このストレージクラスまたはシークレットを使用して Block Storage for VPC インスタンスをプロビジョニングします。
Block Storage for VPC の暗号化を有効にすると、パフォーマンスに約 20% の影響があります。 ただし、正確な影響は、ワーカー・ノードとストレージ・ボリュームの構成によって異なります。 暗号化を有効にする際には、パフォーマンスへの影響を考慮してください。
-
使用するKMSプロバイダーのインスタンスを作成します。
-
KMSインスタンスにルートキーを作成します。
- Key Protect ルート鍵。
- Hyper Protect Crypto Services ルート鍵。 デフォルトでは、ルート・キーは有効期限なしで作成されます。
-
サービス間の認証を設定する。 Block Storage for VPCに IBM® Key Protect へのアクセスを許可します。 必ず与えてくださいBlock Storage for VPC少なくとも
Reader
KMS インスタンスへのアクセス。 -
カスタマイズ・ストレージ・クラスと Kubernetes シークレットのどちらに Key Protect ルート鍵 CRN を保管するかを決定します。 その後、手順に従って、カスタマイズ・ストレージ・クラスまたは Kubernetes シークレットを作成します。
カスタマイズしたストレージ・クラスの例。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage_class_name> # Enter a name for your storage class. provisioner: vpc.block.csi.ibm.io parameters: profile: "5iops-tier" csi.storage.k8s.io/fstype: "ext4" billingType: "hourly" encrypted: "true" encryptionKey: "<encryption_key>" resourceGroup: "" zone: "" tags: "" generation: "gc" classVersion: "1" reclaimPolicy: "Delete"
encrypted
- パラメータに
true
と入力すると、 Block Storage for VPC ボリュームの暗号化を設定するストレージクラスが作成されます。 このオプションをtrue
に設定する場合は、parameters.encryptionKey
で使用する Key Protect サービスインスタンスのルートキーCRNを提供する必要があります。 encryptionKey
- parameters で、先ほど確認したルート鍵 CRN を入力します。
Kubernetes シークレットの例。
apiVersion: v1 kind: Secret type: vpc.block.csi.ibm.io metadata: name: <secret_name> namespace: <namespace_name> stringData: encrypted: <true_or_false> data encryptionKey: <encryption_key>
name
- シークレットの名前を入力します。
namespace
- シークレットを作成する名前空間を入力します。
encrypted
- パラメータに
true
を入力すると、 Block Storage for VPC ボリュームの暗号化を設定できます。 encryptionKey
- parameters で、Key Protect・ボリュームの暗号化に使用する Block Storage for VPC サービス・インスタンスのルート鍵 CRN を入力します。 シークレット内のルート・キー CRN を使用するには、まず
echo -n "<root_key_CRN>" | base64
を実行して、それを base64 に変換する必要があります。
-
アプリへの Block Storage for VPCの追加の手順 4 から 9 までを実行して、カスタマイズしたストレージ・クラスの PVC を作成し、Block Storage for VPC ルート鍵を使用した暗号化を行うように構成された Key Protectをプロビジョンします。 その後、このストレージをアプリ・ポッドにマウントします。
アプリがストレージをマウントして Running 状態になるまでに数分かかることがあります。
-
データが暗号化されていることを確認します。 Block Storage for VPC・ボリュームをリストし、作成したインスタンスの ID をメモします。 ストレージ・インスタンスの名前は、PVC の作成時に自動的に作成された PV 名と同じです。
ibmcloud is vols
出力例
ID Name Status Capacity IOPS Profile Attachment type Created Zone Resource group a395b603-74bf-4703-8fcb-b68e0b4d6960 pvc-479d590f-ca72-4df2-a30a-0941fceeca42 available 10 3000 5iops-tier data 2019-08-17T12:29:18-05:00 us-south-1 a8a12accd63b437bbd6d58fb6a462ca7
-
ボリューム ID を使用して、Block Storage for VPC・インスタンスに関する詳細をリストし、Key Protect ルート鍵がストレージ・インスタンス内に保管されていることを確認します。 ルート鍵は、CLI 出力の Encryption key フィールドで確認できます。
ibmcloud is vol <volume_ID>
出力例
ID a395b603-74bf-4703-8fcb-b68e0b4d6960 Name pvc-479d590f-ca72-4df2-a30a-0941fceeca42 Status available Capacity 10 IOPS 3000 Profile 5iops-tier Encryption key crn:v1:bluemix:public:kms:us-south:a/6ef045fd2b43266cfe8e6388dd2ec098:53369322-958b-421c-911a-c9ae8d5156d1:key:47a985d1-5f5e-4477-93fc-12ce9bae343f Encryption user_managed Resource group a8a12accd63b437bbd6d58fb6a462ca7 Created 2019-08-17T12:29:18-05:00 Zone us-south-1 Volume Attachment Instance Reference
デフォルトのストレージ設定のカスタマイズ
カスタマイズしたストレージ・クラスまたは Kubernetes シークレットを使用して、カスタマイズした設定で Block Storage for VPC を作成することにより、いくつかのデフォルト PVC 設定を変更できます。
- 秘密の変数を使用し、カスタマイズしたストレージクラスでパラメータを指定するメリットは何ですか?
- クラスター管理者として、クラスター・ユーザーが作成するすべての PVC を特定の構成でプロビジョンし、クラスター・ユーザーがデフォルト構成を上書きできないようにする場合は、カスタマイズ・ストレージ・クラスの作成。
- ただし、複数の構成が必要な場合、カスタマイズ・ストレージ・クラスをすべての PVC 構成事例ごとに作成することを避けるために、カスタマイズ・ストレージ・クラスを 1 つ作成して、その中にデフォルトの PVC 設定と、汎用 Kubernetes シークレットへの参照を組み込むことができます。 カスタマイズ・ストレージ・クラスのデフォルト設定をクラスター・ユーザーがオーバーライドする必要がある場合は、独自のカスタム設定を保持する Kubernetes シークレットをクラスター・ユーザーが自分で作成することができます。
クラスター管理者がBlock Storage for VPC・インスタンスの暗号化をセットアップするとき、Key Protect ルート鍵 CRN を base64 にエンコードする場合には、カスタマイズ・ストレージ・クラス内で鍵を直接提供する代わりに、Kubernetes シークレットを使用することもできます。
デフォルトのストレージ・クラスの変更
バージョン 4.2 では、 Block Storage for VPC クラスター・アドオンは、デフォルトのストレージ・クラスを ibmc-vpc-block-10iops-tier
クラスに設定します。 ibmc-vpc-block-10iops-tier
以外のデフォルト・ストレージ・クラスがあり、PVC がデフォルト・ストレージ・クラスを使用している場合、複数のデフォルト・ストレージ・クラスが原因で PVC の作成が失敗する可能性があります。
ibmc-vpc-block-10iops-tier
以外のデフォルト・ストレージ・クラスを使用するには、addon-vpc-block-csi-driver-configmap
を更新して IsStorageClassDefault
を false に変更します。
Block Storage for VPC クラスター・アドオンのデフォルトのストレージ・クラスは、 ibmc-vpc-block-10iops-tier
ストレージ・クラスです。
-
addon-vpc-block-csi-driver-configmap
を編集します。kubectl edit cm addon-vpc-block-csi-driver-configmap -n kube-system
-
IsStorageClassDefault
設定をfalse
に変更します。 -
保存して終了します。
-
15 分間待機し、
ibmc-vpc-block-10iops-tier
ストレージ・クラスの詳細を取得して変更を確認します。kubectl get sc ibmc-vpc-block-10iops-tier -o yaml
独自のストレージ・クラスの作成
Block Storage for VPC インスタンスで、必要な設定を指定して独自のカスタマイズ・ストレージ・クラスを作成します。
必要であれば、独自のストレージクラスを作成することもできます
- カスタムの IOPS 値を設定します。
ext4
以外のファイル・システム・タイプを使用して Block Storage for VPC をセットアップします。- 暗号化をセットアップします。
-
ストレージ・クラス・リファレンスを参照して、ストレージ・クラスに使用する
profile
を決定します。 また、Block Storage for VPC のカスタム IOPS を指定する場合は、カスタム・プロファイルを確認してください。事前インストールされたストレージ・クラスをテンプレートとして使用する場合は、
kubectl get sc <storageclass> -o yaml
コマンドを使用してストレージ・クラスの詳細を取得できます。 -
カスタマイズしたストレージ・クラスの構成ファイルを作成します。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage_class_name> provisioner: vpc.block.csi.ibm.io parameters: profile: "<profile>" csi.storage.k8s.io/fstype: "<file_system_type>" billingType: "hourly" encrypted: "<encrypted_true_false>" encryptionKey: "<encryption_key>" resourceGroup: "" zone: "<zone>" region: "<region>" tags: "<tags>" generation: "gc" classVersion: "1" iops: "<iops>" # Only specify this parameter if you are using a "custom" profile. allowVolumeExpansion: (true|false) # Select true or false. Only supported on version 3.0.1 and later volumeBindingMode: <volume_binding_mode> # csi.storage.k8s.io/provisioner-secret-name: # Uncomment and add secret parameters to enforce encryption. # csi.storage.k8s.io/provisioner-secret-namespace: reclaimPolicy: "<reclaim_policy>"
name
- ストレージ・クラスの名前を入力します。
profile
- 前のステップで選択したプロファイルを入力するか、
custom
を入力してカスタム IOPS 値を使用します。 特定のプロファイルでサポートされるストレージ・サイズを確認するには、階層化 IOPS プロファイルを参照してください。 このストレージ・クラスを使用するすべての PVC は、この範囲内のサイズ値を指定する必要があります。 csi.storage.k8s.io/fstype
- パラメータに、 Block Storage for VPC インスタンスのファイルシステムを入力します。
xfs
、ext3
、またはext4
を選択します。 ボリュームの所有権または許可を変更する場合は、独自のストレージ・クラスでcsi.storage.k8s.io/fstype
を指定する必要があり、PVC にaccessMode
としてReadWriteOnce
がなければなりません。 Block Storage for VPC ドライバーはReadWriteOnceWithFSType
fsGroupPolicy
を使用します。 詳しくは、 CSI ドライバーの資料を参照してください。 encrypted
- パラメータに
true
と入力すると、 Block Storage for VPC ボリュームの暗号化を設定するストレージクラスが作成されます。 このオプションをtrue
に設定する場合は、parameterencryptionKey
で使用する Key Protect サービスインスタンスのルートキーCRNを提供する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。 encryptionKey
parameters.encrypted
にtrue
を入力した場合は、 Block Storage for VPC ボリュームの暗号化に使用する Key Protect サービスインスタンスのルートキー CRN を入力します。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。zone
- parameters で、Block Storage for VPC インスタンスを作成する VPC ゾーンを入力します。 ワーカー・ノードが接続されているゾーンを使用してください。 ワーカーノードが使用するVPCゾーンをリストアップするには、
ibmcloud ks cluster get --cluster <cluster_name_or_ID>
を実行し、CLI出力の 「Worker Zones」フィールドを確認します。 ゾーンを指定しない場合、いずれかのワーカー・ノード・ゾーンが Block Storage for VPC インスタンス用に自動的に選択されます。 region
- ストレージを接続する対象のワーカー・ノードのリージョン。
tags
- パラメータには、 Block Storage for VPC インスタンスに適用するタグのスペース区切りのリストを入力します。 タグを使用すると、インスタンスを簡単に見つけるのに役立ちますし、使用するアプリや環境などの共通の特性に基づいてインスタンスをグループ化するのに役立ちます。
iops
profile
にcustom
を入力した場合は、Block Storage for VPC で使用する IOPS の値を入力します。 ボリューム・サイズ別にサポートされる IOPS 範囲のリストについては、Block Storage for VPC のカスタム IOPS プロファイルの表を参照してください。reclaimPolicy
- ストレージ・クラスの回収ポリシーを入力します。 PVC を削除するときに、PV、物理ストレージ・デバイス、およびデータを保持する場合は、
Retain
と入力します。 PVC を削除するときに、PV、物理ストレージ・デバイス、およびデータを削除する場合は、Delete
と入力します。 allowVolumeExpansion
- ストレージ・クラスのボリューム拡張ポリシーを入力します。 ボリューム拡張を許可する場合は、
true
を入力します。 ボリューム拡張を許可しない場合は、false
を入力します。 volumeBindingMode
- Block Storage for VPC・インスタンスの作成を、このストレージを使用する最初のポッドがスケジュール可能になるときまで遅らせるかどうかを選択します。 作成を遅らせるには、
WaitForFirstConsumer
と入力します。 PVC の作成時に インスタンスを作成する場合は、Immediate
と入力します。
-
カスタマイズしたストレージ・クラスをクラスターに作成します。
kubectl apply -f custom-storageclass.yaml
-
ストレージ・クラスがクラスター内に存在することを確認します。
kubectl get sc
出力例
NAME PROVISIONER AGE ibmc-vpc-block-10iops-tier vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-5iops-tier vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-custom vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-general-purpose vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-retain-10iops-tier vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-retain-5iops-tier vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-retain-custom vpc.block.csi.ibm.io 4d21h ibmc-vpc-block-retain-general-purpose vpc.block.csi.ibm.io 4d21h <custom-storageclass> vpc.block.csi.ibm.io 4m26s
-
アプリへの Block Storage for VPCの追加の手順を実行して、カスタマイズしたストレージ・クラスの PVC を作成し、Block Storage for VPCをプロビジョンします。 その後、そのストレージをサンプル・アプリにマウントします。
Block Storage for VPC のファイル・システムの確認
xfs
や ext3
などの別のファイル・システムを使用して Block Storage for VPCをプロビジョンするには、カスタマイズしたストレージ・クラスを作成します。 デフォルトでは、すべての Block Storage for VPC・インスタンスが ext4
ファイル・システムを使用してプロビジョンされます。
-
使用するファイル・システムで、カスタマイズ・ストレージ・クラスを作成するための手順に従います。
-
アプリへの Block Storage for VPCの追加の手順 4 から 9 までを実行して、カスタマイズしたストレージ・クラスの PVC を作成し、別のファイル・システムのBlock Storage for VPCをプロビジョンします。 その後、このストレージをアプリ・ポッドにマウントします。
アプリがストレージをマウントして Running 状態になるまでに数分かかることがあります。
-
正しいファイル・システムのストレージがマウントされていることを確認します。 クラスター内のポッドをリストし、ストレージのマウントに使用したポッドの名前をメモします。
kubectl get pods
-
ポッドにログインします。
kubectl exec <pod_name> -it bash
-
ポッド内のマウント・パスをリストします。
mount | grep /dev/xvdg
xfs
の出力例。/dev/xvdg on /test type xfs (rw,relatime,attr2,inode64,noquota)
-
ポッドを出ます。
exit
VolumeAttachLimit
の更新
バージョン 5.2
以降の Block Storage for VPC クラスター・アドオンでは、構成マップを編集することで、各ノードに接続できるボリュームの最大数を編集できます。 デフォルト値は12
です。
この機能を使用するには、アカウントが承認されている必要があります。
-
アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
構成マップを編集します。
VALUE
を、設定するボリューム接続制限に置き換えます。kubectl patch configmap/addon-vpc-block-csi-driver-configmap \ -n kube-system \ --type merge \ -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
-
kube-system
名前空間内のibm-vpc-block-csi-node
ポッドが再始動するまで待ちます。 ポッドが再始動したことを確認します。kubectl get pods -n kube-system -w| grep block-csi
-
動的プロビジョニングを使用するか、添付ファイルを手動で作成することで、ボリュームをワーカー・ノードに接続できるようになりました。 詳しくは、 Block Storage for VPC のアプリへの追加 または 既存の Block Storage for VPC インスタンスの使用 を参照してください。
Kubernetes シークレットへのカスタム PVC 設定の保管
Kubernetes シークレットに PVC 設定を指定し、カスタマイズ・ストレージ・クラスでこのシークレットを参照します。 その後、カスタマイズ・ストレージ・クラスを使用して、シークレットに設定したカスタム・パラメーターで PVC を作成します。
- Kubernetes の秘密の使い方は?
- クラスター管理者は、各クラスター・ユーザーがストレージ・クラスのデフォルト設定をオーバーライドできるようにするか、またはクラスター内のすべてのユーザーが使用する必要のある 1 つのシークレットを作成するか (そこで使用する Key Protect ルート鍵 CRN には base64 エンコードを適用することが必要) を選択できます。
- すべてのユーザーがデフォルト設定をカスタマイズできる
- このシナリオでは、クラスター管理者が、カスタマイズ・ストレージ・クラスを 1 つ作成して、その中にデフォルトの PVC 設定と、汎用 Kubernetes シークレットへの参照を組み込みます。 クラスター・ユーザーは、必要な PVC 設定を含む Kubernetes シークレットを作成して、ストレージ・クラスのデフォルト設定をオーバーライドできます。 シークレット内のカスタマイズされた設定をBlock Storage for VPC・インスタンスに適用するには、Kubernetes シークレットと同じ名前の PVC を作成する必要があります。
- Key Protect ルート鍵に base64 エンコードを適用する
- このシナリオでは、カスタマイズ・ストレージ・クラスを 1 つ作成して、その中にデフォルトの PVC 設定と、静的 Kubernetes シークレットへの参照を組み込みます。そのシークレットを使用して、カスタマイズ・ストレージ・クラスのデフォルト設定をオーバーライドまたは拡張します。 クラスター・ユーザーは、独自の Kubernetes シークレットを作成してデフォルト設定を上書きすることはできません。 代わりに、クラスター・ユーザーは、用意されているカスタマイズ・ストレージ・クラスとシークレット内で選択した構成で Block Storage for VPCをプロビジョンする必要があります。 カスタマイズ・ストレージ・クラスだけを作成する方法と比較してこの方法を使用することの利点は、Key Protect・インスタンス内のデータを暗号化するときに、Block Storage for VPC サービス・インスタンスのルート鍵 CRN に対して base64 エンコードを適用できることです。
- PVC設定で Kubernetes の秘密鍵を使用する前に、どのような点に注意する必要がありますか?
reclaimPolicy
、fstype
、volumeBindingMode
などの一部のPVC設定は、 Kubernetes の秘密では設定できず、ストレージクラスで設定する必要があります。 クラスター管理者は、クラスター・ユーザーがデフォルト設定をオーバーライドできるようにする場合、ユーザーがreclaimPolicy
、fstype
、およびvolumeBindingMode
のさまざまな設定で Block Storage for VPCをプロビジョンできるように、汎用 Kubernetes シークレットを参照する十分な数のカスタマイズ・ストレージ・クラスをセットアップしておく必要があります。
すべてのユーザーがデフォルトの PVC 設定をカスタマイズできるようにする
-
クラスター管理者として、カスタマイズ・ストレージ・クラスを作成するための手順に従います。 カスタマイズ・ストレージ・クラスの YAML ファイルで、以下のようにして
metadata.parameters
セクション内の Kubernetes シークレットを参照します。 コードは、変数名を変更しないで現状のまま追加してください。csi.storage.k8s.io/provisioner-secret-name: ${pvc.name} csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
-
クラスター・ユーザーは、ストレージ・クラスのデフォルト設定をカスタマイズする Kubernetes シークレットを作成します。
apiVersion: v1 kind: Secret type: vpc.block.csi.ibm.io metadata: name: <secret_name> namespace: <namespace_name> stringData: iops: "<IOPS_value>" zone: "<zone>" tags: "<tags>" encrypted: <true_or_false> resourceGroup: "<resource_group>" data encryptionKey: <encryption_key>
name
- Kubernetes シークレットの名前を入力します。
namespace
- シークレットを作成する名前空間を入力します。 PVC にあるシークレットを参照するには、その PVC が同じ名前空間に作成されている必要があります。
iops
- stringData セクションで、Block Storage for VPC・インスタンスに許可する IOPS の範囲を入力します。 入力する範囲は、使用する Block Storage for VPC 層と一致している必要があります。
zone
- stringData セクションで、Block Storage for VPC・インスタンスを作成する VPC ゾーンを入力します。 ワーカー・ノードが接続されているゾーンを使用してください。 ワーカーノードが使用するVPCゾーンをリストアップするには、
ibmcloud ks cluster get --cluster <cluster_name_or_ID>
を実行し、CLI出力の 「Worker Zones」フィールドを確認します。 ゾーンを指定しない場合、いずれかのワーカー・ノード・ゾーンが Block Storage for VPC インスタンス用に自動的に選択されます。 tags
- stringData セクションで、PVC が作成されるときに使用するタグのコンマ区切りリストを入力します。 タグは、作成後のストレージインスタンスを見つけるのに役立ちます。
resourceGroup
- 文字列データセクションに、 Block Storage for VPC インスタンスがアクセスできるようにしたいリソースグループIDを入力します。 リソース・グループを入力しない場合、インスタンスは、クラスターが属するリソース・グループのリソースへのアクセスが自動的に許可されます。
encrypted
- 文字列データセクションに
true
と入力すると、 Block Storage for VPC のボリュームの暗号化を設定する秘密鍵が作成されます。 このオプションをtrue
に設定する場合は、parameters.encryptionKey
で使用する Key Protect サービスインスタンスのルートキーCRNを提供する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。 encryptionKey
- データセクションで、
parameters.encrypted
の代わりにtrue
と入力した場合は、 Block Storage for VPC ボリュームの暗号化に使用する Key Protect サービスインスタンスのルートキー CRN を入力します。 シークレット内のルート・キー CRN を使用するには、まずecho -n "<root_key_CRN>" | base64
を実行して、それを base64 に変換する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。
-
Kubernetes シークレットを作成します。
kubectl apply -f secret.yaml
-
アプリへの Block Storage for VPCの追加の手順を実行して、カスタム設定で PVC を作成します。 クラスター管理者が作成したカスタマイズ・ストレージ・クラスで PVC を作成し、シークレットに使用した名前と同じ名前を PVC に使用してください。 シークレットと PVC に同じ名前を使用すると、ストレージ・プロバイダーはそのシークレットの設定を PVC に適用します。
Key Protect ルート鍵 CRN への base64 エンコードの適用
-
クラスター管理者は、Key Protect ルート鍵 CRN の base64 エンコード値を組み込んだ Kubernetes シークレットを作成します。 ルート鍵 CRN を取得するには、Block Storage for VPC 用の暗号化のセットアップを参照してください。
apiVersion: v1 kind: Secret type: vpc.block.csi.ibm.io metadata: name: <secret_name> namespace: <namespace_name> stringData: encrypted: <true_or_false> resourceGroup: "<resource_group>" data: encryptionKey: <encryption_key>
name
- Kubernetes シークレットの名前を入力します。
namespace
- シークレットを作成する名前空間を入力します。 PVC にあるシークレットを参照するには、その PVC が同じ名前空間に作成されている必要があります。
encrypted
- 文字列データセクションに
true
と入力すると、 Block Storage for VPC のボリュームの暗号化を設定する秘密鍵が作成されます。 このオプションをtrue
に設定する場合は、parameters.encryptionKey
で使用する Key Protect サービスインスタンスのルートキーCRNを提供する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。 encryptionKey
- データセクションで、
parameters.encrypted
の代わりにtrue
を入力した場合は、 Block Storage for VPC ボリュームの暗号化に使用する Key Protect サービスインスタンスのルートキー CRN を入力します。 シークレット内のルート・キー CRN を使用するには、まずecho -n "<root_key_CRN>" | base64
を実行して、それを base 64 に変換する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。
-
Kubernetes シークレットを作成します。
kubectl apply -f secret.yaml
-
カスタマイズ・ストレージ・クラスを作成するための手順に従います。 カスタマイズ・ストレージ・クラスの YAML ファイルで、以下のようにして
metadata.parameters
セクション内の Kubernetes シークレットを参照します。 前に作成した Kubernetes シークレットの名前とシークレットを作成した名前空間を入力してください。csi.storage.k8s.io/provisioner-secret-name: <secret_name> csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
-
クラスター・ユーザーは、アプリへの Block Storage for VPCの追加の手順を実行して、カスタマイズ・ストレージ・クラスから PVC を作成します。
ボリューム拡張のセットアップ
拡張をサポートするボリュームをプロビジョニングするには、allowVolumeExpansion
が true
に設定されているストレージ・クラスを使用する必要があります。
拡張できるのは、アプリ・ポッドによってマウントされたボリュームのみです。
アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
4.2
以降のバージョンのアドオンを使用していない場合は、 クラスター内の Block Storage for VPC クラスターアドオンを更新してください。 -
ボリューム拡張をサポートするストレージ・クラスを使用する PVC を作成します。
-
PVC を使用するアプリをデプロイします。 アプリの作成時に、指定した
mountPath
をメモします。 -
PVC がアプリ・ポッドによってマウントされた後、PVC の
spec.resources.requests.storage
フィールドの値を編集して、ボリュームを拡張できます。 ボリュームを拡張するには、PVC を編集して、spec.resources.requests.storage
フィールドの値を大きくします。kubectl edit pvc <pvc-name>
例
spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
-
PVC を保存して閉じます。
-
オプション: ボリュームが拡張されたことを確認します。 PVC の詳細を取得し、PV 名をメモします。
kubectl get pvc <pvc-name>
-
PV の詳細を表示し、ボリューム ID をメモします。
kubectl describe PV
-
Block Storage for VPC ボリュームの詳細を取得し、容量を確認します。
ibmcloud is vol <volume-ID>
アドオンバージョン以前のボリュームを手動で拡張する 4.2
アドオンのバージョン 4.2 より前に作成された既存の Block Storage for VPC ボリュームを手動で拡張するには、以下の手順に従ってください。
拡張できるのは、アプリ・ポッドによってマウントされたボリュームのみです。
-
アプリの詳細を取得し、PVC 名と
mountPath
をメモします。kubectl get pod <pod-name> -n <pod-namespace> -o yaml
-
PVC の詳細を取得し、PV 名をメモします。
kubectl get pvc
-
PV の詳細を表示し、
volumeId
を取得します。kubectl describe pv `pv-name` | grep volumeId
r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
のボリューム ID の出力例。volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
-
PATCH 要求を使用して、ボリュームのサイズを変更します。 以下の例では、ボリュームのサイズを 250 GiB に変更します。
curl -sS -X PATCH -H "Authorization: <iam_token>" "https://<region>.iaas.cloud.ibm.com/v1/volumes/<volumeId>?generation=2&version=2020-06-16" -d '{"capacity":250}'
<iam_token>
- IAM トークン。 IAM トークンを取得するには、
ibmcloud iam oauth-tokens
を実行します。 <region>
- クラスターが存在するリージョン (例:
us-south
)。 <volumeId>
- 先に取得したボリューム ID。 例えば、
r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
と指定します。 <capacity>
- GiB 単位の増加容量 (例:
250
)。
-
アプリ・ポッドにログインします。
kubectl exec <pod-name> -it -- bash
-
以下のコマンドを実行して、ホスト・バイナリーを使用します。
chroot /host
-
ファイル・システムの詳細を取得し、更新する
Filesystem
パスをメモします。 また、アプリケーション・ポッドで指定されたマウント・パスに対してgrep
を実行することもできます。df -h | grep <mount-path>
。df -h
出力例
Filesystem Size Used Avail Use% Mounted on overlay 98G 64G 29G 70% / tmpfs 64M 0 64M 0% /dev tmpfs 32G 0 32G 0% /sys/fs/cgroup shm 64M 0 64M 0% /dev/shm /dev/vda2 98G 64G 29G 70% /etc/hosts /dev/vdg 9.8G 37M 9.8G 1% /mount-path # Note the Filesystem path that corresponds to the mountPath that you specified in your app. tmpfs 32G 40K 32G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 32G 0 32G 0% /proc/acpi tmpfs 32G 0 32G 0% /proc/scsi tmpfs 32G 0 32G 0% /sys/firmware
-
ファイル・システムのサイズを変更します。
sudo resize2fs <filesystem-path>
コマンド例
sudo resize2fs /dev/vdg
-
ファイル・システムのサイズが変更されていることを確認します。
df -h
データのバックアップと復元
Block Storage for VPC 上のデータは、リージョン内の対障害冗長化ゾーンに分散されて保護されます。 データを手動でバックアップするには、Kubernetes kubectl cp
コマンドを使用します。
kubectl cp
コマンドを使用して、クラスタ内のポッドまたは特定のコンテナにファイルやディレクトリをコピーすることができます
始める前に: アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
データのバックアップまたはリストアを行うには、以下の選択肢があります。
ローカル・マシンからクラスター内のポッドにデータをコピーする。
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>
クラスター内のポッドからローカル・マシンにデータをコピーする。
kubectl cp <namespace>/<pod>:<pod_filepath>/<filename> <local_filepath>/<filename>
ローカル・マシンからクラスター内のポッドで実行される特定のコンテナーにデータをコピーする。
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER
ボリューム要求容量について
VPC ブロック CSI ドライバーは、以下の数式を使用してボリューム容量を計算します。
-
値が提供される場合
Gi
:rBytes(requestedBytes) = X * 1024^3 -
値が提供される場合
G
:rBytes(requestedBytes) = X * 10^9
要求された値は (((rBytes+ GiB - 1) / GiB) * GiB) / GiB
に等しくなります。
以下に例を示します。
- 値
20Gi
が指定されている場合、上記の数式を適用すると、作成されるボリュームは20GB
になります。 - 値
20G
が指定された場合、作成されるボリュームは19GB
です。
場合によっては、作成されたボリュームの容量が、要求された値より小さいことがあります。 請求は、要求されたボリュームではなく、作成されたボリュームに適用されることに注意してください。