IBM Cloud Docs
Block Storage for VPC のセットアップ

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 のボリュームは、それらのポッドが同じノードでスケジュールされている限り、複数のポッドでマウントすることができます。

  1. PVC のファイルを作成し、pvc.yaml という名前を付けます。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: ibmc-vpc-block-5iops-tier
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. クラスター内に PVC を作成します。

    kubectl apply -f pvc.yaml
    
  3. 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
    
  4. クラスター内にデプロイメントを作成します。

    kubectl apply -f deployment.yaml
    

詳しくは、以下のリンクを参照してください。

アプリへの Block Storage for VPCの追加

Block Storage for VPCのプロファイルを選択し、Block Storage for VPCをクラスターに動的にプロビジョンするための永続ボリューム請求を作成します。 動的プロビジョニングでは、対応する永続ボリュームが自動的に作成され、お客様の IBM Cloud アカウントで物理ストレージ・デバイスが注文されます。

  1. 容量とパフォーマンスの要件に最も適した Block Storage for VPCのプロファイルを決定します。

  2. その Block Storage for VPCのプロファイルに対応するストレージ・クラスを選択します。

    IBM のすべての事前定義ストレージ・クラスは、デフォルトでは、ext4 ファイル・システムを使用して Block Storage for VPCをセットアップします。 xfsext3 などの別のファイル・システムを使用するには、カスタマイズしたストレージ・クラスを作成してください

    • 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
  3. Block Storage for VPCの構成を決定します。

    1. ストレージのサイズを選択します。 選択した Block Storage for VPCのプロファイルでそのサイズがサポートされることを確認してください。
    2. クラスターまたは永続ボリューム請求 (PVC) が削除された後もデータを保持するかどうかを選択します。
      • データを保持する場合、retain ストレージ・クラスを選択します。 PVC を削除すると、PVC のみが削除されます。 永続ボリュームと、IBM Cloud アカウント内の物理ストレージ・デバイスと、データは残ります。 ストレージを回収し、クラスターで再使用するには、PV を削除し、既存の Block Storage for VPC を使用する手順に従う必要があります。
      • PVC を削除するときに PV、データ、物理 Block Storage for VPC デバイスが削除されるようにするには、retain なしのストレージ・クラスを選択します。
  4. 永続ボリューム請求を定義した構成ファイルを作成し、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.
    
  5. クラスター内に PVC を作成します。

    kubectl apply -f pvc.yaml
    
  6. 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>
    
  7. アプリのデプロイメント構成ファイルを作成し、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 の名前を入力します。
  8. クラスター内にデプロイメントを作成します。

    kubectl apply -f deployment.yaml
    
  9. 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 台のワーカー・ノードにのみ接続できます。 接続を成功させるために、ボリュームがワーカー・ノードと同じゾーンにあることを確認してください。

  1. VPC クラスター内のワーカー・ノードに接続するボリュームを決定します。 ボリューム ID をメモします。

    ibmcloud is volumes
    
  2. ボリュームの詳細をリストします。 サイズゾーン、および IOPS をメモします。 これらの値を PV の作成に使用します。

    ibmcloud is volume <volume_id>
    
  3. VPC クラスターのワーカー・ノードのリストを取得します。 ストレージ・ボリュームと同じゾーンにあるワーカー・ノードのゾーンをメモします。

    ibmcloud ks worker ls -c <cluster_name>
    
  4. オプション: ストレージ・クラス retain を使用して物理 Block Storage for VPC・インスタンスをプロビジョンした場合は、PVC を削除しても、PV と物理ストレージは削除されません。 物理 Block Storage for VPC・デバイスをクラスターで使用するには、まず既存の PV を削除する必要があります。

    1. クラスター内の PV をリストし、Block Storage for VPC・デバイスに属する PV を探します。 PV は released 状態になっています。

      kubectl get pv
      
    2. PV を削除します。

      kubectl delete pv <pv_name>
      
  5. 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 と入力します。 値には、ストレージを接続するワーカー・ノードのリージョンを入力します。
  6. クラスターに PV を作成します。

    kubectl apply -f pv.yaml
    
  7. クラスター内に PV が作成されたことを確認します。

    kubectl get pv
    
  8. 別の 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: ""
    
  9. PVC を作成します。

    kubectl apply -f pvc.yaml
    
  10. PVC が作成され、先ほど作成した PV にバインドされたことを確認します。 この処理には数分かかる場合があります。

kubectl describe pvc <pvc_name>
  1. 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ボリュームスナップショットリソースを削除できない理由 を参照してください。

  1. 更新が使用可能かどうかを確認します。 更新が使用可能な場合は、プラグインのバージョンにアスタリスクのフラグが付けられ、最新バージョンが表示されます。 最新バージョンの値を後で使用するのでメモしてください。

    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
    
  2. アドオンを更新します。 更新コマンドは、インストールしたバージョンによって異なることに注意してください。

    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]
    
  3. アドオンが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 構成マップのデフォルト・ストレージ・クラス設定を変更する必要があります。 詳しくは、デフォルト・ストレージ・クラスの変更を参照してください。

  4. デフォルトの Block Storage for VPC ストレージクラスを基に独自のストレージクラスを作成した場合は、パラメータを更新するために、それらのストレージクラスを再作成する必要があります。 詳細については、 バージョンを更新した後に独自のストレージクラスを再作成する方法( 4.2 )を参照してください。

バージョン 4.2 への更新後の独自のストレージ・クラスの再作成

バージョン 4.2 では、ストレージ・クラスのデフォルト・パラメーターが変更されました。 sizeRange パラメーターまたは iopsRange パラメーターは使用されなくなりました。 これらのパラメータを使用する独自のストレージクラスを作成した場合は、これらのパラメータを削除するために独自のストレージクラスを編集する必要があります。 ご自身のストレージクラスのパラメータを変更するには、それらを削除して再作成する必要があります。 以前は、sizeRange および iopsRange が参照情報として各ストレージ・クラスに提供されていました。 バージョン 4.2 では、これらの参照は削除されました。 ブロック・ストレージのプロファイル、サイズ、および IOPS については、ブロック・ストレージ・プロファイルのリファレンスを参照してください。

  1. ご自身のストレージクラスの詳細を確認するには、以下のコマンドを実行してください。

    kubectl describe sc STORAGECLASS
    
  2. ストレージ・クラスが sizeRange または iopsRange を使用する場合は、ストレージ・クラス YAML を取得してファイルに保存します。

    kubectl get sc STORAGECLASS -o yaml
    
  3. 前のコマンドの出力から保存したファイルで、sizeRange パラメーターまたは iopsRange パラメーターを削除します。

  4. クラスターからストレージ・クラスを削除します。

    kubectl delete sc STORAGECLASS
    
  5. 先に作成したファイルを使用して、クラスター内にストレージ・クラスを再作成します。

    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% の影響があります。 ただし、正確な影響は、ワーカー・ノードとストレージ・ボリュームの構成によって異なります。 暗号化を有効にする際には、パフォーマンスへの影響を考慮してください。

  1. 使用するKMSプロバイダーのインスタンスを作成します。

  2. KMSインスタンスにルートキーを作成します。

  3. サービス間の認証を設定する。 Block Storage for VPCに IBM® Key Protect へのアクセスを許可します。 必ず与えてくださいBlock Storage for VPC少なくとも Reader KMS インスタンスへのアクセス。

  4. カスタマイズ・ストレージ・クラスと 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 に変換する必要があります。
  5. アプリへの Block Storage for VPCの追加の手順 4 から 9 までを実行して、カスタマイズしたストレージ・クラスの PVC を作成し、Block Storage for VPC ルート鍵を使用した暗号化を行うように構成された Key Protectをプロビジョンします。 その後、このストレージをアプリ・ポッドにマウントします。

    アプリがストレージをマウントして Running 状態になるまでに数分かかることがあります。

  6. データが暗号化されていることを確認します。 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
    
  7. ボリューム 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 ストレージ・クラスです。

  1. addon-vpc-block-csi-driver-configmap を編集します。

    kubectl edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. IsStorageClassDefault 設定を false に変更します。

  3. 保存して終了します。

  4. 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 をセットアップします。
  • 暗号化をセットアップします。
  1. ストレージ・クラス・リファレンスを参照して、ストレージ・クラスに使用するprofileを決定します。 また、Block Storage for VPC のカスタム IOPS を指定する場合は、カスタム・プロファイルを確認してください。

    事前インストールされたストレージ・クラスをテンプレートとして使用する場合は、kubectl get sc <storageclass> -o yaml コマンドを使用してストレージ・クラスの詳細を取得できます。

  2. カスタマイズしたストレージ・クラスの構成ファイルを作成します。

    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 インスタンスのファイルシステムを入力します。 xfsext3、または 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.encryptedtrue を入力した場合は、 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
    profilecustom を入力した場合は、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 と入力します。
  3. カスタマイズしたストレージ・クラスをクラスターに作成します。

    kubectl apply -f custom-storageclass.yaml
    
  4. ストレージ・クラスがクラスター内に存在することを確認します。

    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
    
  5. アプリへの Block Storage for VPCの追加の手順を実行して、カスタマイズしたストレージ・クラスの PVC を作成し、Block Storage for VPCをプロビジョンします。 その後、そのストレージをサンプル・アプリにマウントします。

  6. オプション: Block Storage for VPC のファイル・システムのタイプを確認します

Block Storage for VPC のファイル・システムの確認

xfsext3 などの別のファイル・システムを使用して Block Storage for VPCをプロビジョンするには、カスタマイズしたストレージ・クラスを作成します。 デフォルトでは、すべての Block Storage for VPC・インスタンスが ext4 ファイル・システムを使用してプロビジョンされます。

  1. 使用するファイル・システムで、カスタマイズ・ストレージ・クラスを作成するための手順に従います。

  2. アプリへの Block Storage for VPCの追加の手順 4 から 9 までを実行して、カスタマイズしたストレージ・クラスの PVC を作成し、別のファイル・システムのBlock Storage for VPCをプロビジョンします。 その後、このストレージをアプリ・ポッドにマウントします。

    アプリがストレージをマウントして Running 状態になるまでに数分かかることがあります。

  3. 正しいファイル・システムのストレージがマウントされていることを確認します。 クラスター内のポッドをリストし、ストレージのマウントに使用したポッドの名前をメモします。

    kubectl get pods
    
  4. ポッドにログインします。

    kubectl exec <pod_name> -it bash
    
  5. ポッド内のマウント・パスをリストします。

    mount | grep /dev/xvdg
    

    xfs の出力例。

    /dev/xvdg on /test type xfs (rw,relatime,attr2,inode64,noquota)
    
  6. ポッドを出ます。

    exit
    

VolumeAttachLimit の更新

バージョン 5.2 以降の Block Storage for VPC クラスター・アドオンでは、構成マップを編集することで、各ノードに接続できるボリュームの最大数を編集できます。 デフォルト値は12です。

この機能を使用するには、アカウントが承認されている必要があります。

  1. アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

  2. 構成マップを編集します。 VALUE を、設定するボリューム接続制限に置き換えます。

    kubectl patch configmap/addon-vpc-block-csi-driver-configmap \       
    -n kube-system \
    --type merge \
    -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
    
  3. kube-system 名前空間内の ibm-vpc-block-csi-node ポッドが再始動するまで待ちます。 ポッドが再始動したことを確認します。

    kubectl get pods -n kube-system -w| grep block-csi
    
  4. 動的プロビジョニングを使用するか、添付ファイルを手動で作成することで、ボリュームをワーカー・ノードに接続できるようになりました。 詳しくは、 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 の秘密鍵を使用する前に、どのような点に注意する必要がありますか?
reclaimPolicyfstypevolumeBindingMode などの一部のPVC設定は、 Kubernetes の秘密では設定できず、ストレージクラスで設定する必要があります。 クラスター管理者は、クラスター・ユーザーがデフォルト設定をオーバーライドできるようにする場合、ユーザーが reclaimPolicyfstype、および volumeBindingMode のさまざまな設定で Block Storage for VPCをプロビジョンできるように、汎用 Kubernetes シークレットを参照する十分な数のカスタマイズ・ストレージ・クラスをセットアップしておく必要があります。

すべてのユーザーがデフォルトの PVC 設定をカスタマイズできるようにする

  1. クラスター管理者として、カスタマイズ・ストレージ・クラスを作成するための手順に従います。 カスタマイズ・ストレージ・クラスの YAML ファイルで、以下のようにして metadata.parameters セクション内の Kubernetes シークレットを参照します。 コードは、変数名を変更しないで現状のまま追加してください。

    csi.storage.k8s.io/provisioner-secret-name: ${pvc.name}
    csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
    
  2. クラスター・ユーザーは、ストレージ・クラスのデフォルト設定をカスタマイズする 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 用の暗号化のセットアップを参照してください。
  3. Kubernetes シークレットを作成します。

    kubectl apply -f secret.yaml
    
  4. アプリへの Block Storage for VPCの追加の手順を実行して、カスタム設定で PVC を作成します。 クラスター管理者が作成したカスタマイズ・ストレージ・クラスで PVC を作成し、シークレットに使用した名前と同じ名前を PVC に使用してください。 シークレットと PVC に同じ名前を使用すると、ストレージ・プロバイダーはそのシークレットの設定を PVC に適用します。

Key Protect ルート鍵 CRN への base64 エンコードの適用

  1. クラスター管理者は、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 用の暗号化のセットアップを参照してください。
  2. Kubernetes シークレットを作成します。

    kubectl apply -f secret.yaml
    
  3. カスタマイズ・ストレージ・クラスを作成するための手順に従います。 カスタマイズ・ストレージ・クラスの YAML ファイルで、以下のようにして metadata.parameters セクション内の Kubernetes シークレットを参照します。 前に作成した Kubernetes シークレットの名前とシークレットを作成した名前空間を入力してください。

    csi.storage.k8s.io/provisioner-secret-name: <secret_name>
    csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
    
  4. クラスター・ユーザーは、アプリへの Block Storage for VPCの追加の手順を実行して、カスタマイズ・ストレージ・クラスから PVC を作成します。

ボリューム拡張のセットアップ

拡張をサポートするボリュームをプロビジョニングするには、allowVolumeExpansiontrue に設定されているストレージ・クラスを使用する必要があります。

拡張できるのは、アプリ・ポッドによってマウントされたボリュームのみです。

アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

  1. 4.2 以降のバージョンのアドオンを使用していない場合は、 クラスター内の Block Storage for VPC クラスターアドオンを更新してください

  2. ボリューム拡張をサポートするストレージ・クラスを使用する PVC を作成します。

  3. PVC を使用するアプリをデプロイします。 アプリの作成時に、指定した mountPath をメモします。

  4. PVC がアプリ・ポッドによってマウントされた後、PVC の spec.resources.requests.storage フィールドの値を編集して、ボリュームを拡張できます。 ボリュームを拡張するには、PVC を編集して、spec.resources.requests.storage フィールドの値を大きくします。

    kubectl edit pvc <pvc-name>
    

    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  5. PVC を保存して閉じます。

  6. オプション: ボリュームが拡張されたことを確認します。 PVC の詳細を取得し、PV 名をメモします。

    kubectl get pvc <pvc-name>
    
  7. PV の詳細を表示し、ボリューム ID をメモします。

    kubectl describe PV
    
  8. Block Storage for VPC ボリュームの詳細を取得し、容量を確認します。

    ibmcloud is vol <volume-ID>
    

アドオンバージョン以前のボリュームを手動で拡張する 4.2

アドオンのバージョン 4.2 より前に作成された既存の Block Storage for VPC ボリュームを手動で拡張するには、以下の手順に従ってください。

拡張できるのは、アプリ・ポッドによってマウントされたボリュームのみです。

  1. アプリの詳細を取得し、PVC 名と mountPath をメモします。

    kubectl get pod <pod-name> -n <pod-namespace> -o yaml
    
  2. PVC の詳細を取得し、PV 名をメモします。

    kubectl get pvc
    
  3. PV の詳細を表示し、volumeId を取得します。

    kubectl describe pv `pv-name` | grep volumeId
    

    r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1 のボリューム ID の出力例。

    volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
    
  4. 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)。
  5. アプリ・ポッドにログインします。

    kubectl exec <pod-name> -it -- bash
    
  6. 以下のコマンドを実行して、ホスト・バイナリーを使用します。

    chroot /host
    
  7. ファイル・システムの詳細を取得し、更新する 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
    
  8. ファイル・システムのサイズを変更します。

    sudo resize2fs <filesystem-path>
    

    コマンド例

    sudo resize2fs /dev/vdg
    
  9. ファイル・システムのサイズが変更されていることを確認します。

    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 です。

場合によっては、作成されたボリュームの容量が、要求された値より小さいことがあります。 請求は、要求されたボリュームではなく、作成されたボリュームに適用されることに注意してください。