Alibaba Cloud ディスクは、Elastic Compute Service (ECS) のブロックレベルのデータストレージリソースです。Alibaba Cloud ディスクは、低レイテンシ、高パフォーマンス、高耐久性、高信頼性を提供します。ACK Serverless では、Container Storage Interface (CSI) プラグインを使用して、動的にプロビジョニングされたディスクボリュームを作成できます。このトピックでは、動的にプロビジョニングされたディスクボリュームを使用する方法と、動的にプロビジョニングされたディスクボリュームを永続ストレージに使用できることを確認する方法について説明します。
シナリオ
ディスクは、以下のシナリオに適しています。
高いディスク I/O スループットを必要とし、データ共有を必要としないアプリケーションを作成する場合。アプリケーションは MySQL や Redis などのストレージサービスを使用できます。
ログを高速で書き込みたい場合。
ポッドのライフサイクルとは無関係にデータを永続化したい場合。
既存のディスクに基づく静的ボリュームプロビジョニングに加えて、Kubernetes は StorageClasses に基づく動的ボリュームプロビジョニングをサポートしています。動的プロビジョニングを使用すると、ストレージリソースを動的に作成および割り当てることができます。StorageClass を永続ボリューム要求 (PVC) に関連付けると、システムは PVC と StorageClass の構成に基づいて永続ボリューム (PV) を自動的に作成してバインドします。動的プロビジョニングは、アプリケーションのストレージ要件を満たすために、ストレージリソースの作成と構成を自動化します。動的プロビジョニングは、ストレージインフラストラクチャのオーケストレーションの複雑さも軽減します。
Serverless Kubernetes クラスターは、デフォルトの StorageClasses を提供しません。ビジネス要件に基づいて、Serverless Kubernetes クラスターに StorageClasses を手動で作成する必要があります。
Kubernetes は、デフォルトの StorageClass 機能を提供します。PVC が StorageClass を指定しない場合、デフォルトの StorageClass を使用して PVC の PV がプロビジョニングされます。Kubernetes ストレージの詳細については、「ストレージの基本」をご参照ください。
前提条件
Serverless Kubernetes クラスターが作成されていること。詳細については、「Serverless Kubernetes クラスターを作成する」をご参照ください。
kubectl クライアントが Serverless Kubernetes クラスターに接続されていること。詳細については、「kubectl を使用して ACK クラスターに接続する」をご参照ください。
CSI プラグインが手動でインストールされていること。詳細については、「csi-provisioner をインストールおよび更新する」をご参照ください。
手順
ACK コンソール
手順 1: StorageClass を作成する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、 を選択します。
[StorageClasses] ページの右上隅にある [作成] をクリックします。
[作成] ダイアログボックスで、パラメーターを構成します。
次の表にパラメーターを示します。
パラメーター
説明
名前
StorageClass の名前。名前は、ACK コンソールに表示される形式の要件に従う必要があります。
PV タイプ
永続ボリューム (PV) のタイプ。[クラウドディスク] を選択します。
パラメーター
デフォルトでは、type パラメーターが追加され、cloud_essd に設定されます。type パラメーターは、ディスクカテゴリを指定します。有効な type パラメーターの値:
cloud_essd
: 企業向け SSD (ESSD)。cloud_regional_disk_auto
: リージョナル ESSDelastic_ephemeral_disk_premium
: プレミアムエラスティック一時ディスク。elastic_ephemeral_disk_standard
: 標準エラスティック一時ディスク。cloud_ssd
: 標準 SSD。cloud_efficiency
: Ultra ディスク。
上記の値の任意の組み合わせに type パラメーターを設定できます。たとえば、
type: cloud_ssd,cloud_essd
を指定できます。この場合、システムはカテゴリの指定された順序でディスクの作成を試みます。ディスクが作成されると、システムは試行を停止します。説明特定の ECS インスタンスタイプは、ESSD またはエラスティック一時ディスクをサポートしていません。詳細については、「Elastic Block Storage に関するよくある質問」をご参照ください。
カスタムパラメーターを追加できます。たとえば、zoneId パラメーターを追加して、ディスクを作成するゾーンの ID を指定できます。クラスターがシングルゾーンにデプロイされている場合は、値をゾーンの ID に設定します。例:
cn-beijing-a
。クラスターがゾーンをまたいでデプロイされている場合は、ビジネス要件に基づいて zoneId パラメーターを複数のゾーン ID に設定できます。例:cn-beijing-a, cn-beijing-b
。再利用ポリシー
ディスクの再利用ポリシー。デフォルト値: 削除。パラメーターを 保持 に設定することもできます。
削除モード: PVC が削除されると、関連する PV とディスクも削除されます。
保持モード: PVC が削除されると、関連する PV とディスクは保持されます。PV とディスクデータは手動でのみ削除できます。
より高いデータセキュリティが必要な場合は、データが誤って削除されないように、保持モードを使用することをお勧めします。
バインディングモード
ボリュームバインディングモード。デフォルト値: 即時。これは、ポッドを作成する前にシステムがディスクを作成することを指定します。
パラメーターを構成した後、[作成] をクリックします。
StorageClass が作成されると、[StorageClasses] ページで StorageClass を表示できます。
手順 2: PVC を作成する
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム要求] ページの右上隅にある [作成] をクリックします。
[PVC の作成] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
説明
PVC タイプ
PVC のタイプ。パラメーターをクラウドディスクまたは NAS に設定できます。この例では、このパラメーターは クラウドディスク に設定されています。
名前
PVC の名前。名前は、名前空間内で一意である必要があります。
割り当てモード
この例では、[StorageClass を使用する] が選択されています。
既存の StorageClass
[選択] をクリックします。[StorageClass の選択] ダイアログボックスで、使用する StorageClass を見つけ、[アクション] 列の [選択] をクリックします。
容量
PVC によって要求される容量。
アクセスモード
PVC を使用してプロビジョニングされた PV のアクセスモード。デフォルト値: ReadWriteOnce。
[作成] をクリックします。
PVC が作成されると、[永続ボリューム要求] ページで PVC を表示できます。PVC は PV にバインドされています。
手順 3: アプリケーションを作成する
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[StatefulSets] ページの右上隅にある [イメージから作成] をクリックします。
- アプリケーションパラメーターを構成します。この例では、ボリュームパラメーターを構成する方法を示します。その他のパラメーターの詳細については、「StatefulSet を使用してステートフルアプリケーションを作成する」をご参照ください。
ACK クラスターのローカルストレージボリュームとクラウドストレージボリュームを構成できます。この例では、[クラウドストレージ] が選択されています。
この例で作成されたディスクボリュームを、コンテナーの /tmp パスにマウントします。ディスクボリュームがマウントされると、/tmp パスに生成されたコンテナーデータはディスクボリュームに保存されます。 - その他のパラメーターを構成し、[作成] をクリックします。アプリケーションが作成されると、ボリュームを使用してアプリケーションデータを保存できます。
kubectl
手順 1: StorageClass を作成する
マルチゾーンクラスターでは、最初にクラウドディスクを作成し、次にポッドを作成することで、StorageClass を作成できます。
次のテンプレートを使用して、storage-class-csi.yaml という名前のファイルを作成します。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-ssd-b provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_essd,cloud_ssd,cloud_efficiency encrypted: "false" reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: Immediate
パラメーター
説明
provisioner
値を
diskplugin.csi.alibabacloud.com
に設定します。この値は、Alibaba Cloud ディスクのプロビジョナープラグインを使用して StorageClass を作成することを指定します。type
このパラメーターは、ディスクカテゴリを指定します。有効な値:
cloud_auto
: ESSD AutoPL ディスク。cloud_essd
: ESSD。これがデフォルト値です。cloud_essd_entry
: ESSD Entry ディスク。cloud_ssd
: 標準 SSD。cloud_efficiency
: Ultra ディスク。elastic_ephemeral_disk_standard
: 標準エラスティック一時ディスク。elastic_ephemeral_disk_premium
: プレミアムエラスティック一時ディスク。cloud_regional_disk_auto
: リージョナル ESSD。
このパラメーターを上記の値の任意の組み合わせに設定できます。たとえば、このパラメーターを
type: cloud_ssd,cloud_essd,cloud_auto
に設定できます。この場合、システムはカテゴリの指定された順序でディスクの作成を試みます。ディスクが作成されると、システムは試行を停止します。重要クラスター内のノードのゾーンとインスタンスタイプ、およびディスクの課金とパフォーマンスの要件に基づいて、ディスクカテゴリを指定できます。詳細については、以下のトピックを参照してください。
encrypted
オプション。このパラメーターは、ディスクが暗号化されているかどうかを指定します。デフォルト値は false で、ディスクが暗号化されていないことを示します。
reclaimPolicy
ディスクの再利用ポリシー。デフォルトでは、このパラメーターは 削除 に設定されています。このパラメーターを 保持 に設定することもできます。
削除モード: PVC が削除されると、関連する PV とディスクも削除されます。
保持モード: PVC が削除されると、関連する PV とディスクは保持されます。PV とディスクデータは手動でのみ削除できます。
高いデータセキュリティが必要な場合は、データが誤って削除されないように 保持 モードを使用することをお勧めします。
allowVolumeExpansion
このパラメーターを true に設定すると、ディスクを自動的に拡張できます。
volumeBindingMode
ボリュームバインディングモード。デフォルト値: 即時。これは、ポッドを作成する前にシステムがディスクを作成することを指定します。
次のコマンドを実行して、StorageClass を作成します。
kubectl apply -f storage-class-csi.yaml
作成された StorageClass を表示します。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、 を選択します。
StorageClass が作成されると、[StorageClasses] ページで StorageClass を表示できます。
手順 2: PVC を作成する
次のテンプレートを使用して、pvc-ssd.yaml という名前のファイルを作成します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-disk-ssd-b
パラメーター
説明
name
PVC の名前。
accessModes
PVC を使用してプロビジョニングされた PV のアクセスモード。
volumeMode
オプション。ディスクがマウントされる形式。ファイルシステム がサポートされています。
storageClassName
PVC に関連付ける StorageClass の名前。
storage
PVC によって要求されるディスクサイズ。最小容量は 20 GiB です。
次のコマンドを実行して、PVC を作成します。
kubectl create -f pvc-ssd.yaml
作成された PVC を表示します。
クラスター詳細ページの左側のナビゲーションウィンドウで、
を選択します。[永続ボリューム要求] ページで、作成された PVC を表示できます。
手順 3: アプリケーションを作成する
pvc-dynamic.yaml という名前のファイルを作成します。
次のテンプレートを使用して、nginx-dynamic という名前のアプリケーションを作成し、PVC をアプリケーションにマウントします。
apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /data volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvc
パラメーター
説明
mountPath
ディスクのマウントパス。
claimName
アプリケーションにマウントされた PVC の名前。
次のコマンドを実行して、アプリケーションをデプロイし、PVC をアプリケーションにマウントします。
kubectl create -f pvc-dynamic.yaml
デプロイされたアプリケーションを表示します。
クラスター詳細ページの左側のナビゲーションウィンドウで、
を選択します。[StatefulSets] ページで、作成されたアプリケーションを表示できます。
関連情報
ディスクボリュームの使用時にエラーが発生した場合は、「ディスクボリュームに関するよくある質問」をご参照ください。
ディスクサイズがビジネス要件を満たしていない場合、またはディスクがいっぱいの場合にディスクサイズを変更する方法の詳細については、「ディスクボリュームを拡張する」をご参照ください。
リアルタイムのディスク使用状況の詳細については、「コンテナーストレージモニタリングの概要」をご参照ください。