第28章 永続ボリュームの拡張

28.1. Persistent Volume Claim (永続ボリューム要求、PVC) の拡張を有効化

OpenShift Container Platform ユーザーによる Persistent Volume Claim (永続ボリューム要求、PVC) の拡張を可能にするには、OpenShift Container Platform 管理者は、allowVolumeExpansiontrue に設定して StorageClass を作成するか、または更新する必要があります。このクラスから作成された PVC のみを拡張することができます。

たとえば、OpenShift Container Platform 管理者は allowVolumeExpansion 属性を StorageClass の設定に追加できます。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gluster-container
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://heketi-storage-project.cloudapps.mystorage.com"
  restuser: "admin"
  secretNamespace: "default"
  secretName: "heketi-secret"
allowVolumeExpansion: true

28.2. GlusterFS ベースの Persistent Volume Claim (永続ボリューム要求、PVC) の拡張

OpenShift Container Platform 管理者が allowVolumeExpansiontrue に設定して StorageClass を作成すると、そのクラスから PVC を作成でき、以降は必要に応じてその PVC を編集し、新規サイズを要求できます。

例:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: gluster-mysql
spec:
  storageClass: "storageClassWithFlagSet"
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi 1
1
spec.resources.requests を更新して拡張されたボリュームを要求できます。

28.3. ファイルシステムを搭載した Persistent Volume Claim (永続ボリューム要求、PVC) の拡張

ファイルサイズのサイズ変更を必要とするボリュームタイプ (GCE PD、EBS、および Cinder など) に基づいて PVC を拡張するには 2 つの手順からなるプロセスが必要です。通常このプロセスでは、CloudProvider でボリュームオブジェクトを拡張してから実際のノードでファイルシステムを拡張します。

ノードでのファイルシステムの拡張は、新規 Pod がボリュームと共に起動する場合にのみ実行されます。

以下のプロセスは、 allowVolumeExpansiontrue に設定された状態で PVC が StorageClass から作成されていることを前提としています。

  1. spec.resources.requests を編集して PVC を編集し、新規サイズを要求します。CloudProvider オブジェクトのサイズ変更が終了すると、PVC は FileSystemResizePending に設定されます。
  2. 条件を確認するために以下のコマンドを入力します。
  oc describe pvc <pvc_name>

CloudProvider オブジェクトのサイズ変更が終了すると、永続ボリューム (PV) オブジェクトは PersistentVolume.Spec.Capacity に新規に要求されたサイズを反映します。この時点で、PVC から新規 Pod を作成または再作成してファイルシステムのサイズ変更を終了することができます。Pod が実行されている場合、新たに要求されたサイズが利用可能になり、FileSystemResizePending 条件が PVC から削除されます。

28.4. ボリューム拡張時に障害からの復旧

マスターまたはノードで基礎となるストレージの拡張に失敗した場合に、OpenShift Container Platform の管理者は手動で PVC の状態を復旧し、管理者の介入なしにコントローラーによって継続的に再試行されるリサイズ要求を取り消します。

現時点で、これは以下の手順によって手動で実行できます。

  1. Retain 回収ポリシーで要求 (PVC) にバインドされている PV をマークします。これは、PV を編集し、persistentVolumeReclaimPolicyRetain に変更することで実行できます。
  2. PVC を削除します (後ほど再作成されます)。
  3. 新規作成された PVC が Retain とマークされた PV にバインドするには、手動で PV を編集し、PV 仕様から claimRef エントリーを削除します。これで、PV は Available とマークされます。PVC の事前バインドに関する情報は、「ボリュームと要求の事前バインド」を参照してください。
  4. 小さ目のサイズか、または基礎となるストレージプロバイダーによって割り当て可能なサイズで PVC を再作成します。また、PVC の volumeName フィールドを PV の名前に設定します。これにより、PVC はプロビジョニングされた PV のみにバインドされます。
  5. PV で回収ポリシーを復元します。