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 クラスターではデフォルトで有効になっています。
- アドオン Block Storage for VPC を無効にすると、再度有効にするまで無効なままになります。 クラスタマスターを更新または更新した際には有効化されません。
IBM Cloud Block Storage for VPC のクイック・スタート
このクイック・スタート・ガイドでは、ボリュームを動的にプロビジョニングするための PVC を作成することで、クラスタ内に 10Gi 5IOPS ティア Block Storage for VPC ボリュームを作成します。 その後、その PVC をマウントするアプリ・デプロイメントを作成します。
第2世代のストレージクラスを 選択できるようになった。
Block Storage for VPC ボリュームは、それらのポッドが同じノードでスケジュールされている限り、複数のポッドでマウントできます。
-
PVC のファイルを作成し、
pvc.yamlという名前を付けます。 第 1 世代と第 2 世代の ストレージ クラスから選択します。ibmc-vpc-block-5iops-tierストレージクラスを使用した第一世代の例:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier accessModes: - ReadWriteOnce resources: requests: storage: 10Giibmc-vpc-block-sdpストレージクラスを使用した第二世代の例:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: ibmc-vpc-block-sdp 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 volumesEvents** セクションに ** エラーが断続的に表示される場合があります。 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: Filesystemname- 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 クラスター・アドオンの更新
クラスタアドオン Block Storage for VPC は、コマンド addon update を使用して更新できます。
アドオンを更新する前に、変更ログを確認してください。
以前のリリースから「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 Readyibmc-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少なくとも
ReaderKMS インスタンスへのアクセス。 -
カスタマイズ・ストレージ・クラスと 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 インスタンスで、必要な設定を指定して独自のカスタマイズ・ストレージ・クラスを作成します。 SDPプロファイルを使用すると、容量と最大スループット制限を指定できます。
SSD定義パフォーマンスプロファイル(SDP)は、ダラス、フランクフルト、ロンドン、マドリード、大阪、サンパウロ、シドニー、東京、トロント、ワシントンで利用可能です D.C。 SSD定義のパフォーマンスプロファイル向けスナップショット作成は、ダラス、フランクフルト、東京、ワシントンで利用可能です。 D.C
必要であれば、独自のストレージ・クラスを作ることもできる:
- カスタムの IOPS 値を設定します。
ext4以外のファイル・システム・タイプを使用して Block Storage for VPC をセットアップします。- 暗号化をセットアップします。
- SSDのパフォーマンスを設定します。
開始前に
-
ストレージ・クラス・リファレンスを参照して、ストレージ・クラスに使用する
profileを決定します。 -
また、Block Storage for VPC のカスタム IOPS を指定する場合は、カスタム・プロファイルを確認してください。
-
SSD定義パフォーマンス(SDP)プロファイルを使用する場合は、 容量範囲とIOPsの詳細を確認して ください。 SSD定義のパフォーマンスを使用する場合、ボリュームの容量は指定したIOPsとスループットによって決定されることに注意してください。
-
既存のストレージ・クラスを出発点として、独自のクラスを作成することができます。
kubectl get sc <storageclass> -o yamlコマンドを使用して、既存のストレージ・クラスの詳細を保存します。 -
コストを低く抑えるために、最初は最小容量、最小IOPS、最小スループットのPVCをプロビジョニングすることができます。これは、最小3000IOPS、最小1000スループット(Mbps)の
ibmc-vpc-block-sdpストレージクラスを使用します。 プロビジョニング後は、ニーズに合わせてPVCにアクセスし、 IOPSや スループットを 調整することができます。
カスタム・ストレージ・クラスを作成するには
-
カスタマイズされたストレージ・クラス構成ファイルを以下のフォーマットで作成します。 第 1 世代と第 2 世代の ストレージ クラスから選択します。
第一世代の例:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage_class_name> provisioner: vpc.block.csi.ibm.io parameters: profile: "<profile>" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom csi.storage.k8s.io/fstype: "<file_system_type>" # xfs, ext3, or ext4 billingType: "hourly" encrypted: "<encrypted_true_false>" encryptionKey: "<encryption_key>" resourceGroup: "" zone: "<zone>" region: "<region>" tags: "<tags>" generation: "gc" throughput: "<throughput>" # Example: 2000 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- 前のステップで選択したプロファイルを入力します。
general-purpose,sdp,5iops-tier,10iops-tier, または custom use custom IOPs value を選択してください。 特定のプロファイルでサポートされているストレージサイズを調べるには、 Tiered IOPSプロファイルを 参照してください。 このストレージ・クラスを使用するすべての PVC は、この範囲内のサイズ値を指定する必要があります。 csi.storage.k8s.io/fstype- parameters で、Block Storage for VPC インスタンスのファイル・システムを入力します。
xfs、ext3、またはext4を選択します。 ボリュームの所有権やパーミッションを変更したい場合は、独自のストレージ・クラスでcsi.storage.k8s.io/fstypeを指定し、PVC のReadWriteOnceをaccessModeとして指定する必要があります。 Block Storage for VPC ドライバはReadWriteOnceWithFSTypefsGroupPolicyを使用する。 詳細については、 CSIドライバーのドキュメントを参照してください。 encrypted- パラメータに
trueと入力すると、 Block Storage for VPC ボリュームに暗号化を設定するストレージクラスが作成されます。 このオプションをtrueに設定する場合、parameterencryptionKeyで使用する Key Protect サービスインスタンスのルートキーCRN を指定する必要があります。 データの暗号化について詳しくは、Block Storage for VPC 用の暗号化のセットアップを参照してください。 encryptionKeyparameters.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 インスタンスに適用するタグのリストをスペース区切りで入力します。 タグを使用すると、インスタンスを簡単に見つけるのに役立ちますし、使用するアプリや環境などの共通の特性に基づいてインスタンスをグループ化するのに役立ちます。
iopsprofileにcustomまたはsdpを入力した場合は、 Block Storage for VPC で使用する IOP の値を入力します。 ボリューム・サイズ別にサポートされる IOPS 範囲のリストについては、Block Storage for VPC のカスタム IOPS プロファイルの表を参照してください。throughput- この値は、
sdpプロファイルを使用している場合に入力します。 詳細については、 SDPプロファイルのIOPとスループットの詳細を 参照 reclaimPolicy- ストレージ・クラスの回収ポリシーを入力します。 PVC を削除するときに、PV、物理ストレージ・デバイス、およびデータを保持する場合は、
Retainと入力します。 PVC を削除するときに、PV、物理ストレージ・デバイス、およびデータを削除する場合は、Deleteと入力します。 allowVolumeExpansion- ストレージ・クラスのボリューム拡張ポリシーを入力します。 ボリューム拡張を許可する場合は、
trueを入力します。 ボリューム拡張を許可しない場合は、falseを入力します。 volumeBindingMode- Block Storage for VPC・インスタンスの作成を、このストレージを使用する最初のポッドがスケジュール可能になるときまで遅らせるかどうかを選択します。 作成を遅らせるには、
WaitForFirstConsumerと入力します。 PVC の作成時に インスタンスを作成する場合は、Immediateと入力します。
第二世代の例:
第一世代の
ibmc-vpc-block-5iops-tierストレージ・クラスを使用して 9.6TB PVC をプロビジョニングする場合、最大 IOPS は 48,000 で、最大スループットは 6144 Mbps です。 しかし、第二世代のibmc-vpc-block-sdp-max-bandwidthストレージクラスでは、最大IOPSは64,000、最大スループットは8192Mbpsである。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-vpc-block-sdp-max-bandwidth provisioner: vpc.block.csi.ibm.io parameters: profile: "sdp" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom csi.storage.k8s.io/fstype: "ext4" # xfs, ext3, or ext4 billingType: "hourly" encrypted: "false" encryptionKey: "" resourceGroup: "" zone: "us-east" region: "tor01" tags: "tag" generation: "gc" throughput: "8192" # Example: 2000 classVersion: "1" iops: "64000" # Only specify this parameter if you are using a "custom" profile. allowVolumeExpansion: true # Select true or false. Only supported on version 3.0.1 and later volumeBindingMode: Immediate reclaimPolicy: "Delete" -
カスタマイズしたストレージ・クラスをクラスターに作成します。
kubectl apply -f custom-storageclass.yaml -
ストレージ・クラスがクラスター内に存在することを確認します。
kubectl get sc出力例
NAME PROVISIONER AGE <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/xvdgxfsの出力例。/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 volumeIdr011-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です。
場合によっては、作成されたボリュームの容量が、要求された値より小さいことがあります。 請求は、要求されたボリュームではなく、作成されたボリュームに適用されることに注意してください。
ブロック・ストレージに信頼されたプロファイルを割り当てる
既知の問題により、信頼済みプロファイルが実装されている場合、VPC Block Storage ボリューム上のユーザータグの更新が表示されない可能性があります。 この問題は、信頼されたプロファイルを使用しないクラスタでは発生しません。
信頼されたプロファイルを使用して、異なる IBM Cloud ID に、ストレージソリューションを含むアカウント内のリソースへのアクセスを許可することができます。 信頼されたプロファイルは、アクセス制御を一元化し、長期間のAPIキーの必要性を排除し、特定のタスクに必要な最小限のパーミッションをスコープすることを可能にする。 詳細については、 ストレージコンポーネントの信頼済みプロファイルの構成を 参照してください。