Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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

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

ボリューム拡張はテクノロジープレビュー機能であり、OpenShift Container Platform 3.10 クラスターではデフォルトで有効ではありません。ユースケースによっては、OpenShift Container Platform 管理者がこの機能を有効にする理由が他にもある可能性があります。

注記

Red Hat のテクノロジープレビュー機能のサポートについての詳細は、https://access.redhat.com/support/offerings/techpreview/ を参照してください。

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

これとは別に、OpenShift Container Platform 管理者は ExpandPersistentVolumes 機能フラグを有効にし、PersistentVolumeClaimResize 受付コントローラーをオンにする必要があります。PersistentVolumeClaimResize 受付コントローラーについての詳細は、「受付コントローラー」を参照してください。

機能ゲートを有効にするには、システム全体で ExpandPersistentVolumestrue に設定します。

  1. 適切な「ノード設定マップ」を設定します。

    # oc edit configmaps <name> -n openshift-node

    以下に例を示します。

    oc edit cm node-config-compute -n openshift-node
    ...
    kubeletArguments:
    ...
      feature-gates:
      - ExpandPersistentVolumes=true
    # systemctl restart atomic-openshift-node
  2. マスター API およびコントローラーマネージャーで ExpandPersistentVolumes 機能ゲートを有効にします。

    # cat /etc/origin/master/master-config.yaml
    ...
    kubernetesMasterConfig:
      apiServerArguments:
      ...
      feature-gates:
      - ExpandPersistentVolumes=true
    
    # master-restart api
    # master-restart controllers

29.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 を更新して拡張されたボリュームを要求できます。

29.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 から削除されます。

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

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

現在、これらの手順は手動で行い、完了できます。

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