ディスクを永続ボリューム (PV) として動的にプロビジョニングするには、StorageClassを手動で作成し、永続ボリューム要求 (PVC) のstorageClassNameフィールドを設定してディスクタイプを指定する必要があります。
指定したゾーンID (zoneId) でStorageClassを作成する
storage-class.yamlファイルを作成し、次の内容をファイルにコピーします。
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: alicloud-disk-ssd-hangzhou-b provisioner: alicloud/disk parameters: type: cloud_ssd regionId: cn-hangzhou zoneId: cn-hangzhou-b reclaimPolicy: Retain
下表に、各パラメーターを説明します。
パラメーター
説明
provisioner
値をalicloud/diskに設定します。 これは、ディスクをプロビジョニングするために使用されるボリュームプラグインです。
タイプ
ディスクタイプ。 有効な値には、cloud_efficiency、cloud_ssd、cloud_essd、およびavailableが含まれます。 このパラメーターを使用可能に設定すると、システムは拡張SSD (ESSD) 、標準SSD、およびウルトラディスクの順序でディスクを作成しようとします。 システムはディスクが作成されるまで試行を続けます。
regionId
ディスクを作成するリージョン。
reclaimPolicy
ディスクを再利用するポリシー。 デフォルトでは、このパラメーターはDeleteに設定されています。 このパラメーターを "Retain" に設定することもできます。 高いデータセキュリティが必要な場合は、ユーザーエラーによるデータ損失を回避するために、このパラメーターをRetainに設定することを推奨します。
zoneId
ディスクを作成するゾーン。
マルチゾーンクラスターの場合、複数のゾーンを指定できます。 例:
zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c
暗号化
オプションです。 ディスクを暗号化するかどうかを指定します。 デフォルトでは、このパラメーターはfalseに設定されています。 これは、ディスクが暗号化されないことを指定します。
次のコマンドを実行してStorageClassを作成します。
kubectl apply -f storage-class.yaml
WaitForFirstConsumerモードでStorageClassを作成する
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-topology-ssd
provisioner: alicloud/disk
parameters:
type: cloud_ssd
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
WaitForFirstConsumerモードでStorageClassを作成せず、zoneidパラメーターが設定されていない場合、Disk-ControllerコンポーネントがデプロイされているゾーンにPVが作成されます。
WaitForFirstConsumerモードでStorageClassを作成せず、zoneidパラメーターが設定されている場合、システムはラウンドロビンアルゴリズムに基づいて指定されたゾーンでPVを作成しようとします。
WaitForFirstConsumerモードでStorageClassを作成すると、PVCを消費するポッドがスケジュールされているノードのディスクが作成されます。 ディスクは、スケジュールされたポッドのゾーンに作成されます。
PVC の作成
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: disk-ssd
spec:
accessModes:
- ReadWriteOnce
storageClassName: alicloud-disk-ssd-hangzhou-b
resources:
requests:
storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
name: disk-pod-ssd
spec:
containers:
- name: disk-pod
image: nginx
volumeMounts:
- name: disk-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: disk-pvc
persistentVolumeClaim:
claimName: disk-ssd
以下のデフォルト設定が含まれています。
マルチゾーンクラスターでは、StorageClassを手動で作成して、ディスクが作成されるゾーンを指定する必要があります。
デフォルトでは、次のタイプのStorageClassがシングルゾーンクラスターに提供されます。
alicloud-disk-efficiency: ウルトラディスク。
alicloud-disk-ssd: 標準SSD。
alicloud-disk-essd: ESSD ディスク。
alicloud-disk-available: 高可用性モード。 このモードでは、システムは最初に標準SSDの作成を試みます。 SSDリソースが使い果たされた場合、システムはウルトラディスクの作成を試みます。
重要v1.14.8.44 c23b62c5-aliyunより前のバージョンのalicloud-disk-controllerの場合、システムはESSD、標準SSD、ウルトラディスクの順序でディスクを作成しようとします。 システムはディスクが作成されるまで試行を続けます。
alicloud-disk-topology: WaitForFirstConsumerモードでディスクを作成します。
クラウドディスクを使用したマルチインスタンス StatefulSet の作成
volumeClaimTemplatesパラメーターを使用して、複数のPVCとPVを動的に作成し、PVをPVCにバインドできます。
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: disk-ssd
mountPath: /data
volumeClaimTemplates:
- metadata:
name: disk-ssd
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-ssd-hangzhou-b"
resources:
requests:
storage: 20Gi
Container Service for Kubernetes (ACK) コンソールで動的にプロビジョニングされたディスクボリュームを使用することもできます。 詳細については、「ACKコンソールで動的にプロビジョニングされたディスクボリュームの使用」をご参照ください。