Alibaba Cloud クラウドディスクボリュームを Alibaba Cloud Container Service の Kubernetes クラスターで使用できます。
Alibaba Cloud クラウドディスクを Kubernetes クラスターへ以下の 2 つ方法でマウントできます。
制限事項
- クラウドディスクは、非共有ストレージデバイスで、1 つのポッドにのみマウントできます。
- クラウドディスクボリュームの使用前に、クラウドディスクを作成し、ディスク ID を取得する必要があります。 詳細は、「クラウドディスクの作成」をご参照ください。
注 作成したクラウドディスクのタイプにより、以下の要件を満たす必要があります。
- 基本クラウドディスクの最小容量は 5 GiB です。
- Ultra ディスクの最小容量は 20 GiB です。
- SSD ディスクの最小容量は 20 GiB です。
- "volumeId" パラメーターは、マウントされたクラウドディスクの ID を示します。 ボリューム名および PV 名は "volumeId" パラメーターの値と同じである必要があります。
- Kubernetes クラスターでは、クラウドディスクと同じゾーンにあるノードに対してのみクラウドディスクをマウントできます。
- 従量課金クラウドディスクのみマウントできます。 Kubernetes クラスターでは、ECS インスタンスの課金方法をサブスクリプションへ変更できますが、クラウドディスクの課金方法をサブスクリプションへ変更することはできません。 クラウドディスクの課金方法をサブスクリプションへ変更した場合、クラウドディスクのマウントは失敗します。
静的ボリューム
Alibaba Cloud クラウドディスクをボリュームを通して、または PV および PVC を通して使用できます。
前提条件
ECS コンソールでクラウドディスクが作成されている必要があります。 詳細は、「クラウドディスクの作成」をご参照ください。
ボリュームを通じたクラウドディスクの使用
以下の disk-deploy.yaml ファイルを使用し、ポッドを作成します。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-disk-deploy
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-flexvolume-disk
image: nginx
volumeMounts:
- name: "d-bp1j17ifxfasvts3tf40"
mountPath: "/data"
volumes:
- name: "d-bp1j17ifxfasvts3tf40"
flexVolume:
driver: "alicloud/disk"
fsType: "ext4"
options:
volumeId: "d-bp1j17ifxfasvts3tf40"
PV および PVC を通じたクラウドディスクの使用
手順 1: クラウドディスク PV の作成
クラウドディスク PV を、Container Service コンソール、または YAML ファイルにより作成できます。
YAML ファイルによる PV の作成
以下の disk-pv.yaml
ファイルを使用して PV を作成します。
apiVersion: v1
kind: PersistentVolume
metadata:
name: d-bp1j17ifxfasvts3tf40
labels:
failure-domain.beta.kubernetes.io/zone: cn-hangzhou-b
failure-domain.beta.kubernetes.io/region: cn-hangzhou
spec:
capacity:
storage: 20Gi
storageClassName: disk
accessModes:
- ReadWriteOnce
flexVolume:
driver: "alicloud/disk"
fsType: "ext4"
options:
volumeId: "d-bp1j17ifxfasvts3tf40"
Container Service コンソールでのクラウドディスクボリュームの作成
- Container Service コンソール にログインします。
- Container Service-Kubernetes の左側のナビゲーションウインドウで、 を選択します。
- [ボリューム] ページで、目的のクラスターを選択し、[作成] をクリックします。
- 表示されたダイアログボックスで、ボリュームパラメーターを設定します。
- PV タイプ: クラウドディスク がこのページの例では使用されています。
- アクセスモード: デフォルトでは、 "ReadWriteOnce" に設定されています。
- クラウドディスク ID: クラスターと同一リージョン、および同一ゾーンにあるクラウドディスクを選択することを推奨します。
- ファイルシステムタイプ: 保存されるデータのデータタイプを選択します。 利用可能なデータタイプは、ext4、ext3、xfs および vfat です。 デフォルト設定は ext4 です。
- タグ: ボリュームにタグを追加します。
- [作成] をクリックします。
手順 2: PVC の作成
以下の disk-pvc.yaml
ファイルを使用して PVC を作成します。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: disk
resources:
requests:
storage: 20Gi
手順 3: ポッドの作成
以下の disk-pod.yaml ファイルを使用してポッドを作成します。
apiVersion: v1
kind: Pod
metadata:
name: "flexvolume-alicloud-example"
spec:
containers:
- name: "nginx"
image: "nginx"
volumeMounts:
- name: pvc-disk
mountPath: "/data"
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: pvc-disk
動的ボリューム
動的ボリュームを使用するには、手動で StorageClass を作成し、PVC で "storageClassName" を使用してクラウドディスクタイプを指定する必要があります。
StorageClass の作成
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
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" に設定します。これは、StorageClass により Alibaba Cloud クラウドディスクのプロビジョナープラグインを用いてクラウドディスクが作成されたことを示します。
- type: 以下の値のうち 1 つを使用してクラドディスクのタイプを指定します。"cloud"、"cloud_efficiency"、 "cloud_ssd" および "available" 。 このパラメーターを "available" に設定した場合、システムにより "cloud_efficiency"、"cloud_ssd" および "cloud" の順で、このどれかが有効になるまで繰り返します。
- regionid: クラウドディスクを作成するリージョンを設定します。
- reclaimPolicy: クラウドディスクの再利用に関するポリシーを設定します。 デフォルト設定は "Delete" です。 このパラメーターを "Retain" に設定することもできます。 より高いデータセキュリティが必要な場合は、このパラメーターを "Retain" に設定することを推奨します。
- zoneid: クラウドディスクを作成するゾーンを設定します。
注 複数のゾーンにクラウドディスクを作成する場合、"zoneid" パラメーターを複数の値で設定できます。
たとえば、"zoneid: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c" のように設定します。
- encrypted: (オプション) クラウドディスクを暗号化するかどうかを設定します。 デフォルト値は false です。 つまり、クラウドディスクは暗号化されません。
サービスの作成
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
デフォルトオプション
デフォルトでは、Kubernetes クラスターにより、単一ゾーンクラスターで使用できる以下の StorageClasses が提供されます。
- "alicloud-disk-common"、基本クラウドディスクです。
- "alicloud-disk-efficiency"、Ultra ディスクです。
- "alicloud-disk-ssd"、 SSD ディスクです。
- alicloud-disk-available: この StorageClass は、ディスク選択の体系的な方法を提供します。 具体的には、初めにシステムは Ultra ディスクの作成を試みます。 指定されたゾーンで Ultra ディスクが完売している場合、システムは SSD ディスクの作成を試みます。 SSD ディスクが完売の場合、システムは基本クラウドディスクの作成を試みます。
クラウドディスクを使用したマルチインスタンス StatefulSet の作成
volumeClaimTemplates を使用して、マルチインスタンス StatefulSet を作成することを推奨します。これにより、動的に複数の PVC および PV が作成でき、PVC および PV を互いに接続することができます。
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1beta2
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"
resources:
requests:
storage: 20Gi