第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 管理者は、allowVolumeExpansion
を true
に設定して StorageClass を作成するか、または更新する必要があります。このクラスから作成された PVC のみを拡張することができます。
これとは別に、OpenShift Container Platform 管理者は ExpandPersistentVolumes
機能フラグを有効にし、PersistentVolumeClaimResize
受付コントローラーをオンにする必要があります。PersistentVolumeClaimResize
受付コントローラーについての詳細は、「受付コントローラー」を参照してください。
機能ゲートを有効にするには、システム全体で ExpandPersistentVolumes
を true
に設定します。
適切な「ノード設定マップ」を設定します。
# 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
マスター 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 管理者が allowVolumeExpansion
を true
に設定して 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 がボリュームと共に起動する場合にのみ実行されます。
以下のプロセスは、 allowVolumeExpansion
が true
に設定された状態で PVC が StorageClass から作成されていることを前提としています。
-
spec.resources.requests
を編集して PVC を編集し、新規サイズを要求します。CloudProvider オブジェクトのサイズ変更が終了すると、PVC はFileSystemResizePending
に設定されます。 - 条件を確認するために以下のコマンドを入力します。
oc describe pvc <pvc_name>
CloudProvider オブジェクトのサイズ変更が終了すると、永続ボリューム (PV) オブジェクトは PersistentVolume.Spec.Capacity
に新規に要求されたサイズを反映します。この時点で、PVC から新規 Pod を作成または再作成してファイルシステムのサイズ変更を終了することができます。Pod が実行されている場合、新たに要求されたサイズが利用可能になり、FileSystemResizePending
条件が PVC から削除されます。
29.4. ボリュームの拡張時に障害からの復帰
マスターまたはノードで基礎となるストレージの拡張に失敗した場合に、OpenShift Container Platform の管理者は手動で PVC の状態を復旧し、管理者の介入なしにコントローラーによって継続的に再試行されるリサイズ要求を取り消します。
現在、これらの手順は手動で行い、完了できます。
-
Retain
回収ポリシーで、要求 (PVC) にバインドされている PV をマークします。これは、PV を編集してpersistentVolumeReclaimPolicy
からRetain
に変更することで可能です。 - PVC を削除します (後ほど再作成されます)。
-
新規作成された PVC が
Retain
とマークされた PV にバインドするには、手動で PV を編集し、PV 仕様からclaimRef
エントリーを削除します。これで、PV はAvailable
とマークされます。PVC の事前バインドに関する情報は、「ボリュームと要求の事前バインド」を参照してください。 -
小さめのサイズまたは、基盤のストレージプロバイダーにより割り当て可能なサイズで PVC を再作成します。また、PVC の
volumeName
フィールドを PV の名前に設定します。これで、プロビジョニングされた PV のみに PVC がバインドされます。 - PV で回収ポリシーを復元します。