ディスクボリュームは、高い IOPS と低レイテンシーを必要とするが、データ共有を必要としないアプリケーションに適しています。Alibaba Cloud アカウント内にクラウドディスクが存在しない場合、動的にプロビニングされたディスクボリュームを作成して、ディスクの作成とマウントを自動化できます。このアプローチは、データの永続性の要件を満たすのに役立ちます。このトピックでは、動的にプロビジョニングされたディスクボリュームの使用方法と、それがデータを永続化できることを確認する方法について説明します。
シナリオ
ディスクは、次のシナリオに適しています。
高いディスク I/O スループットを必要とし、データ共有を必要としないアプリケーションを作成したい場合。アプリケーションは MySQL や Redis などのストレージサービスを使用できます。
高速でログを書き込みたい場合。
Pod のライフサイクルとは独立した方法でデータを永続化したい場合。
既存のディスクに基づく静的ボリュームプロビジョニングに加えて、Kubernetes は StorageClass に基づく動的ボリュームプロビジョニングをサポートしています。動的プロビジョニングは、ストレージリソースを自動的に作成および割り当てます。StorageClass を永続ボリューム要求 (PVC) に関連付けると、システムは PVC と StorageClass の構成に基づいて永続ボリューム (PV) を自動的に作成してバインドします。動的プロビジョニングは、ストレージリソースの作成と構成を自動化して、アプリケーションのストレージ要件を満たし、ストレージインフラストラクチャのオーケストレーションの複雑さを軽減します。
前提条件
Container Storage Interface (CSI) プラグインがクラスターにインストールされていること。
説明クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。[ストレージ] タブで、csi-plugin および csi-provisioner コンポーネントのインストールステータスを確認します。特定の機能を使用するために CSI プラグインをアップグレードするには、「CSI プラグインをアップグレードする」をご参照ください。
クラスターが FlexVolume コンポーネントを使用している場合、FlexVolume は非推奨であるため、CSI プラグインに移行する必要があります。詳細については、「FlexVolume から CSI への移行」をご参照ください。
仮想ノードにスケジュールする必要がある Pod にディスクボリュームをマウントする場合は、まず、次の表のバージョンマッピングに基づいて kube-scheduler をアップグレードする必要があります。
Kubernetes バージョン
Kube-scheduler の最小バージョン要件
≥ 1.28
6.9.3
1.26
6.8.7
1.24
6.4.7
1.22
6.4.5
使用上の注意
ディスクは非共有ストレージです。ディスクでマルチアタッチが有効になっていない場合、一度に 1 つの Pod にしかマウントできません。マルチアタッチの詳細については、「NVMe ディスクのマルチアタッチ機能と予約機能を使用する」をご参照ください。
ディスクは、ディスクと同じゾーンにある Pod にのみマウントできます。ゾーンをまたいだマウントはサポートされていません。
Pod が再構築されると、元のディスクが再マウントされます。他の制約のために Pod を元のゾーンにスケジュールできない場合、ディスクをマウントできないため、Pod は Pending 状態のままになります。
ディスクは、デプロイメントではなく、StatefulSet または個々の Pod にマウントすることをお勧めします。
説明マルチアタッチが無効になっている場合、ディスクは 1 つの Pod にしかマウントできません。ディスクをデプロイメントにマウントする場合は、レプリカ数を 1 に設定する必要があります。Pod ごとに個別のボリュームを構成したり、マウントとアンマウントの優先順位を保証したりすることはできません。さらに、デプロイメントのアップグレードポリシーにより、再起動時に新しい Pod がディスクのマウントに失敗する可能性があります。したがって、ディスクをデプロイメントにマウントすることはお勧めしません。
ディスクボリュームを使用する場合、アプリケーションの YAML ファイルで
securityContext.fsgroupを構成すると、kubelet はマウント完了後にchmodおよびchownコマンドを実行します。これにより、マウント時間が増加します。説明securityContext.fsgroupを構成すると、ディスクのマウント時にボリューム内のファイルの所有者が自動的に変更されます。これにより、ファイルの数によっては準備時間が増加する可能性があります。Kubernetes バージョン 1.20 以降のクラスターでは、fsGroupChangePolicyをOnRootMismatchに設定できます。これにより、コンテナーが初めて起動するときにのみファイル所有者が変更されるようになります。その後の Pod のアップグレードや再構築では、マウント時間は影響を受けません。これがニーズに合わない場合は、initContainer を使用して権限を調整することをお勧めします。
StorageClass
StorageClass は、使用したいストレージのクラスを定義します。StorageClass でさまざまなパラメーターを指定して、パラメーターに基づいてストレージリソースの供給と調整を自動化できます。詳細については、「ストレージの基礎」をご参照ください。
CSI プラグインをインストールすると、ACK はクラウドディスク用のデフォルトの StorageClass を提供します。デフォルトの StorageClass がビジネス要件を満たさない場合は、カスタム StorageClass を作成できます。
既存の StorageClass のプロパティは変更できません。StorageClass のプロパティを更新する場合は、使用したいプロパティを持つ新しい StorageClass を作成する必要があります。StorageClass の構成は、ACK コンソールで表示するか、
kubectl describe sc <storageclass-name>コマンドを実行して表示できます。StorageClass パラメーターの詳細については、「StorageClass パラメーター」をご参照ください。クラウドボックス内のエンタープライズ SSD (ESSD) は、パフォーマンスレベル 0 (PL0) である必要があります。クラウドボックスを使用する場合、ESSD 用の StorageClass を構成するときに
performanceLevelをPL0に設定する必要があります。ESSD のデフォルトの StorageClass は、PL1 ESSD を作成するために使用されます。クラウドボックスを使用する場合は、ESSD 用の新しい StorageClass を作成する必要があります。標準 SSD、Ultra ディスク、および基本ディスクは、前世代のクラウドディスクであり、特定のリージョンおよびゾーンでは購入できません。Ultra ディスクおよび基本ディスクの代わりにパフォーマンスレベル 0 の ESSD (PL0 ESSD) または ESSD Entry ディスクを使用し、標準 SSD の代わりに ESSD AutoPL ディスクを使用することをお勧めします。
デフォルトの StorageClass | ディスクカテゴリ |
alicloud-disk-topology-alltype | 高可用性 (HA) 構成。StorageClass を使用してディスクを Pod にマウントすると、システムは Pod をホストする Elastic Compute Service (ECS) が存在するゾーンにディスクを作成します。ゾーン内のディスクカテゴリの在庫が十分であり、ディスクカテゴリが Pod をホストする ECS インスタンスのインスタンスタイプでサポートされている必要があります。システムはまず ESSD の作成を試みます。ESSD の作成に失敗した場合、標準 SSD の作成を試みます。標準 SSD の作成に失敗した場合、Ultra ディスクの作成を試みます。 重要 StorageClass 構成で |
alicloud-disk-essd | ESSD を作成します。デフォルトの PL は PL1 です。 |
alicloud-disk-ssd | 標準 SSD を作成します。 |
alicloud-disk-efficiency | Ultra ディスクを作成します。 |
StorageClass に基づく動的プロビジョニングを使用して作成されたディスクは、従量課金制の課金方法を使用します。
クラウドディスクの課金ルールの詳細については、「ブロックストレージデバイス」をご参照ください。
ディスクの価格の詳細については、「ブロックストレージデバイスの価格」をご参照ください。
kubectl を使用して動的にプロビジョニングされたディスクボリュームをマウントする
ステップ 1: StorageClass を作成する
デフォルトの StorageClass がビジネス要件を満たさない場合は、カスタム StorageClass を作成できます。既存の StorageClass のプロパティは変更できません。StorageClass のプロパティを更新する場合は、使用したいプロパティを持つ新しい StorageClass を作成する必要があります。
クラウドディスクを、ディスクとは異なるゾーンにあるノードにマウントすることはできません。さらに、クラウドディスクをマウントできる ECS インスタンスタイプは、ディスクのカテゴリによって異なります。動的にプロビジョニングされたディスクボリュームを Pod にマウントする場合は、ディスクと Pod をホストするノードが同じゾーンにあることを確認してください。さらに、ノードの ECS インスタンスタイプがディスクのカテゴリでサポートされている必要があります。ディスクカテゴリと ECS インスタンスタイプ間のマッチング ルールの詳細については、「インスタンスファミリーの概要」をご参照ください。
disk-sc.yaml という名前のファイルを作成し、次のテンプレートをファイルにコピーします。
重要クラスターが複数のゾーンにまたがってデプロイされている場合は、クラウドディスクと ECS ノード間のゾーンの不整合によるマウントの失敗を防ぐために、
WaitForFirstConsumerモードを使用する StorageClass を作成することをお勧めします。次のスケジューリング方法またはアノテーションを使用して、クラウドディスクをマウントしたい Pod を仮想ノードにスケジュールする場合、
WaitForFirstConsumerモードを使用する StorageClass はサポートされていません。alibabacloud.com/eci: "true"ラベルを Elastic Container Instance ベースの Pod または Pod の名前空間に追加します。alibabacloud.com/acs: "true"ラベルを ACS Pod に追加します。Pod 構成で nodeName パラメーターを指定して、Pod を仮想ノードにスケジュールします。仮想ノードには
virtual-kubeletというプレフィックスが付きます。k8s.aliyun.com/eci-vswitchアノテーションを追加して、Elastic Container Instance ベースの Pod の vSwitch を指定します。k8s.aliyun.com/eci-fail-strategy: "fail-fast"アノテーションを追加して、Elastic Container Instance ベースの Pod の障害処理ポリシーを fail-fast に設定します。
WaitForFirstConsumer モード (ディスクを作成する前に Pod をスケジュールする)
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-wait-for-first-consumer provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_auto,cloud_essd,cloud_ssd # システムは、指定されたディスクカテゴリの優先度に基づいてディスクを作成しようとします。作成されるディスクの実際のカテゴリは、ディスクがマウントされる ECS インスタンスのインスタンスタイプと、ECS インスタンスがデプロイされているゾーンでサポートされているディスクカテゴリによって異なります。 fstype: ext4 diskTags: "a:b,b:c" encrypted: "false" performanceLevel: PL1 # クラウドボックスを使用する場合は、値を PL0 に設定する必要があります。 provisionedIops: "40000" burstingEnabled: "false" volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Retain allowVolumeExpansion: trueImmediate モード (Pod を作成する前にディスクを作成する)
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-immediate provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_essd,cloud_ssd,cloud_efficiency # システムは、指定されたディスクカテゴリの優先度に基づいてディスクを作成しようとします。作成されるディスクの実際のカテゴリは、ディスクがマウントされる ECS インスタンスのインスタンスタイプと、ECS インスタンスがデプロイされているゾーンでサポートされているディスクカテゴリによって異なります。 regionId: cn-beijing encrypted: "false" reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: Immediate allowedTopologies: - matchLabelExpressions: - key: topology.diskplugin.csi.alibabacloud.com/zone values: - cn-beijing-a - cn-beijing-b次の表に、StorageClass のパラメーターを示します。
パラメーター
説明
nameStorageClass の名前。名前は小文字で始まる必要があり、小文字、数字、ピリオド (.)、ハイフン (-) のみを含めることができます。
provisionerドライバーのタイプ。この例では、パラメーターは
diskplugin.csi.alibabacloud.comに設定されており、Alibaba Cloud が提供する CSI プラグインが使用されることを示します。parameterstypeパラメーターは必須です。このパラメーターは、使用されるディスクカテゴリを指定します。有効な値:cloud_auto: ESSD AutoPL ディスクcloud_essd(デフォルト): ESSDcloud_essd_entry: ESSD Entry ディスクcloud_ssd: 標準 SSDcloud_efficiency: Ultra ディスクelastic_ephemeral_disk_standard: 標準エラスティックエフェメラルディスクelastic_ephemeral_disk_premium: プレミアムエラスティックエフェメラルディスクcloud_regional_disk_auto: リージョナル ESSD
このパラメーターは、前述の値の任意の組み合わせに設定できます。たとえば、このパラメーターを
type: cloud_ssd,cloud_essd,cloud_autoに設定できます。この場合、システムは指定されたカテゴリの順序でディスクを作成しようとします。ディスクが作成されると、システムは試行を停止します。重要クラスター内のノードのゾーンとインスタンスタイプ、およびディスクの課金とパフォーマンスに関する要件に基づいてディスクカテゴリを指定できます。詳細については、次のトピックをご参照ください。
volumeBindingModeディスクのバインドモード。デフォルト値:
Immediate。値をWaitForFirstConsumerに設定することもできます。Immediate: StorageClass を使用する PVC が作成されるときにディスクを作成します。これにより、ディスクを使用する Pod を作成する前にディスクが作成され、プロビジョニングされます。WaitForFirstConsumer: PVC を使用する Pod が作成されるまで PV のバインドとプロビジョニングを遅延させます。Pod がノードにスケジュールされた後、ノードがデプロイされているゾーンにディスクが作成され、PV としてプロビジョニングされます。
reclaimPolicyディスクの再利用ポリシー。デフォルト値:
Delete。値をRetainに設定することもできます。Delete: PVC が削除されると、PV とクラウドディスクも削除されます。Retain: PVC が削除されると、PV とクラウドディスクは保持されます。PV とクラウドディスクを手動で削除する必要があります。
データセキュリティに対する要件が高い場合は、誤った削除を防ぐために値を Retain に設定することをお勧めします。
allowVolumeExpansion自動ディスクボリューム拡張を有効にするには、値を
trueに設定します。allowedTopologiesブロックストレージをマウントできるトポロジーを制限します
次のキーを使用して、ブロックストレージのゾーンを制限できます。
topology.diskplugin.csi.alibabacloud.com/zonetopology.kubernetes.io/zone(csi-provisioner コンポーネント v1.33.2 以降に適用可能)
弾性エフェメラルディスクについては、
alibabacloud.com/ecs-instance-idキーを使用してノードを指定できます。
StorageClass を作成します。
kubectl create -f disk-sc.yamlStorageClass を表示します。
kubectl get sc期待される出力:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-disk-efficiency diskplugin.csi.alibabacloud.com Delete Immediate true 158m alicloud-disk-essd diskplugin.csi.alibabacloud.com Delete Immediate true 158m alicloud-disk-ssd diskplugin.csi.alibabacloud.com Delete Immediate true 158m alicloud-disk-topology-alltype diskplugin.csi.alibabacloud.com Delete WaitForFirstConsumer true 158m alicloud-disk-wait-for-first-consumer diskplugin.csi.alibabacloud.com Retain WaitForFirstConsumer true 10s
ステップ 2: PVC を作成する
disk-pvc.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 20Gi storageClassName: alicloud-disk-wait-for-first-consumer # この例では、遅延 PVC-PV バインディングを使用する StorageClass が指定されています。次の表にパラメーターを示します。
パラメーター
説明
accessModesボリュームのアクセスモード。詳細については、「ボリュームアクセスモード」をご参照ください。
有効な値:
ReadWriteOnce、ReadOnlyMany、およびReadWriteMany。サポートされるアクセスモードは、StorageClass のmultiAttachパラメーターと PVC のvolumeModeパラメーターによって異なります。multiAttachパラメーターがfalseに設定され、volumeModeパラメーターが空でない場合、ReadWriteOnceアクセスモードのみがサポートされます。multiAttachパラメーターがtrueに設定され、volumeModeパラメーターがFilesystemに設定されている場合、ReadWriteOnceまたはReadOnlyManyアクセスモードがサポートされます。multiAttachパラメーターがtrueに設定され、volumeModeパラメーターがBlockに設定されている場合、3 つすべてのボリュームモードがサポートされます。
説明multiAttachパラメーターは、[マルチアタッチ] 機能を有効にするかどうかを指定するために使用されます。デフォルト値: false。デフォルト値はマルチアタッチ機能を無効にします。詳細については、「クラウドディスクのマルチアタッチ」をご参照ください。volumeModeボリュームのモード。有効な値:
Filesystem(デフォルト): ファイルシステムモードBlock: ブロック
storagePod に割り当てるストレージ容量。これはディスクの容量でもあります。
説明さまざまなディスクカテゴリでサポートされている容量範囲の詳細については、「ブロックストレージのパフォーマンス」をご参照ください。
storageClassName関連付ける StorageClass の名前。
PVC を作成します。
kubectl create -f disk-pvc.yamlPVC を表示します。
kubectl get pvc出力は、PVC が Pending 状態であることを示しています。この場合、StorageClass は遅延 PVC-PV バインディングを使用するため、PV は作成されません。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Pending alicloud-disk-wait-for-first-consumer <unset> 14s
ステップ 3: アプリケーションを作成し、ディスクをアプリケーションにマウントする
次のテンプレートに基づいて disk-test.yaml という名前のファイルを作成します。
次の YAML の例では、1 つの Pod を持つ StatefulSet を作成します。Pod は
disk-pvcという名前の PVC を使用してストレージリソースを要求し、ボリュームを/dataパスにマウントします。apiVersion: apps/v1 kind: StatefulSet metadata: name: disk-test spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: - name: pvc-disk mountPath: /data volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvcStatefulSet を作成し、ディスクをマウントします。
kubectl create -f disk-test.yamlStatefulSet 内の Pod のステータスを確認します。
kubectl get pod -l app=nginx期待される出力は、StatefulSet のレプリカ数が 1 であるため、1 つの Pod が作成されたことを示しています。
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 14sマウントパスを確認して、ディスクがマウントされていることを確認します。
kubectl exec disk-test-0 -- df -h /data期待される出力:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
ACK コンソールで動的にプロビジョニングされたディスクボリュームをマウントする
ステップ 1: StorageClass を作成する
デフォルトの StorageClass がビジネス要件を満たさない場合は、カスタム StorageClass を作成できます。既存の StorageClass のプロパティは変更できません。StorageClass のプロパティを更新する場合は、使用したいプロパティを持つ新しい StorageClass を作成する必要があります。
クラウドディスクを、ディスクとは異なるゾーンにあるノードにマウントすることはできません。さらに、クラウドディスクをマウントできる ECS インスタンスタイプは、ディスクのカテゴリによって異なります。動的にプロビジョニングされたディスクボリュームを Pod にマウントする場合は、ディスクと Pod をホストするノードが同じゾーンにあることを確認してください。さらに、ノードの ECS インスタンスタイプがディスクのカテゴリでサポートされている必要があります。ディスクカテゴリと ECS インスタンスタイプ間のマッチング ルールの詳細については、「インスタンスファミリーの概要」をご参照ください。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
[StorageClasses] ページで、[作成] をクリックします。
[作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。
パラメーター
説明
例
名前
StorageClass のカスタム名を入力します。名前は ACK コンソールに表示されるフォーマット要件に従う必要があります。
alicloud-disk-wait-for-first-consumer
PV タイプ
[クラウドディスク] を選択します。
クラウドディスク
パラメーター
デフォルトでは、
typeパラメーターが追加されます。このパラメーターはディスクカテゴリを指定します。有効な値:cloud_auto: ESSD AutoPL ディスクcloud_essd(デフォルト): ESSDcloud_essd_entry: ESSD Entry ディスクcloud_ssd: 標準 SSDcloud_efficiency: Ultra ディスクelastic_ephemeral_disk_standard: 標準エラスティックエフェメラルディスクelastic_ephemeral_disk_premium: プレミアムエラスティックエフェメラルディスクcloud_regional_disk_auto: リージョナル ESSD
このパラメーターは、前述の値の任意の組み合わせに設定できます。たとえば、このパラメーターを
type: cloud_ssd,cloud_essd,cloud_autoに設定できます。この場合、システムは指定されたカテゴリの順序でディスクを作成しようとします。ディスクが作成されると、システムは試行を停止します。重要クラスター内のノードのゾーンとインスタンスタイプ、およびディスクの課金とパフォーマンスに関する要件に基づいてディスクカテゴリを指定できます。詳細については、次のトピックをご参照ください。
type: cloud_auto,cloud_essd,cloud_ssd
再利用ポリシー
ディスクの再利用ポリシー。デフォルト値:
Delete。値をRetainに設定することもできます。Delete: PVC が削除されると、PV とクラウドディスクも削除されます。Retain: PVC が削除されると、PV とクラウドディスクは保持されます。PV とクラウドディスクを手動で削除する必要があります。
データセキュリティに対する要件が高い場合は、誤った削除を防ぐために値を Retain に設定することをお勧めします。
Retain
バインドモード
ディスクのバインドモード。デフォルト値:
Immediate。値をWaitForFirstConsumerに設定することもできます。Immediate: StorageClass を使用する PVC が作成されるときにディスクを作成します。これにより、ディスクを使用する Pod を作成する前にディスクが作成され、プロビジョニングされます。WaitForFirstConsumer: PVC を使用する Pod が作成されるまで PV のバインドとプロビジョニングを遅延させます。Pod がノードにスケジュールされた後、ノードがデプロイされているゾーンにディスクが作成され、PV としてプロビジョニングされます。
重要クラスターが複数のゾーンにまたがってデプロイされている場合は、クラウドディスクと ECS ノード間のゾーンの不整合によるマウントの失敗を防ぐために、
WaitForFirstConsumerモードを使用する StorageClass を作成することをお勧めします。次のスケジューリング方法またはアノテーションを使用して、クラウドディスクをマウントしたい Pod を仮想ノードにスケジュールする場合、
WaitForFirstConsumerモードを使用する StorageClass はサポートされていません。alibabacloud.com/eci: "true"ラベルを Elastic Container Instance ベースの Pod または Pod の名前空間に追加します。alibabacloud.com/acs: "true"ラベルを ACS Pod に追加します。Pod 構成で nodeName パラメーターを指定して、Pod を仮想ノードにスケジュールします。仮想ノードには
virtual-kubeletというプレフィックスが付きます。k8s.aliyun.com/eci-vswitchアノテーションを追加して、Elastic Container Instance ベースの Pod の vSwitch を指定します。k8s.aliyun.com/eci-fail-strategy: "fail-fast"アノテーションを追加して、Elastic Container Instance ベースの Pod の障害処理ポリシーを fail-fast に設定します。
WaitForFirstConsumer
StorageClass を作成した後、[StorageClass] ページで StorageClass を表示できます。
ステップ 2: PVC を作成する
ACK コンソールのクラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[永続ボリューム要求] ページの右上隅にある [作成] をクリックします。
[作成] ダイアログボックスで、パラメーターを設定し、[作成] をクリックします。
パラメーター
説明
例
ストレージ要求タイプ
[クラウドディスク] を選択します。
クラウドディスク
名前
PVC のカスタム名を入力します。名前は ACK コンソールに表示されるフォーマット要件に従う必要があります。
diks-pvc
割り当てモード
[StorageClass を使用] を選択します。
StorageClass を使用
既存のストレージクラス
PVC に関連付ける StorageClass を選択します。
alicloud-disk-topology-alltype
容量
Pod に割り当てるストレージ容量を指定します。これはディスクの容量でもあります。
説明さまざまなディスクカテゴリでサポートされている容量範囲の詳細については、「ブロックストレージのパフォーマンス」をご参照ください。
20Gi
アクセスモード
[ReadWriteOnce] を選択する必要があります。これは、ボリュームが読み書きモードで 1 つの Pod にのみマウントされることを示します。
ReadWriteOnce
PVC を作成した後、[永続ボリューム要求] ページで PVC を表示できます。
ステップ 3: アプリケーションを作成し、ディスクをアプリケーションにマウントする
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[StatefulSet] ページの右上隅にある [イメージから作成] をクリックします。
StatefulSet のパラメーターを設定し、[作成] をクリックします。
次の表に主要なパラメーターを示します。必要に応じて他のパラメーターを設定します。詳細については、「StatefulSet を作成する」をご参照ください。
設定ページ
パラメーター
説明
例
基本情報
アプリケーション名
StatefulSet のカスタム名を入力します。フォーマット要件については、インターフェイスのプロンプトを参照してください。
disk-test
レプリカ数
StatefulSet のレプリカ数を設定します。
1
コンテナー設定
イメージ名
アプリケーションのデプロイに使用するイメージのアドレスを入力します。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
必須リソース
必要な vCPU、メモリ、およびエフェメラルストレージリソースを設定します。
CPU: 0.25 コア
メモリ: 512 MiB
エフェメラルストレージ: 設定しない
ボリューム
[既存の要求を追加] をクリックします。次に、パラメーターを設定します。
マウントソース: ステップ 2 で作成した PVC を選択します。
コンテナーパス: ディスクをマウントするコンテナーパスを入力します。
マウントソース: disk-pvc
コンテナーパス: /data
アプリケーションのステータスを確認します。
[StatefulSet] ページで、アプリケーション名をクリックします。
[Pod] タブで、Pod が Running 状態であることを確認します。
kubectl を使用してディスク上のデータの永続性を確認する
前の例で作成した StatefulSet には、マウントされたディスクを持つ 1 つの Pod が含まれています。この Pod が削除されると、新しい Pod が自動的に作成され、元のディスクが新しい Pod に再マウントされます。ディスク上のデータは保持されます。次のようにして、ディスクのデータの永続性を確認できます。
ディスクのマウントパス内のデータを確認します。
kubectl exec disk-test-0 -- ls /data期待される出力:
lost+foundディスクにファイルを書き込みます。
kubectl exec disk-test-0 -- touch /data/testPod を削除します。
kubectl delete pod disk-test-0説明StatefulSet 内の Pod を削除すると、システムは自動的に新しい Pod を作成します。
新しい Pod のステータスを確認します。
kubectl get pod -l app=nginx期待される出力は、新しい Pod が削除された Pod と同じ名前を持つことを示しています。これは StatefulSet の特徴です。
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 27s新しい Pod がディスクを再マウントしたこと、およびデータが完全であることを確認します。
kubectl exec disk-test-0 -- ls /data期待される出力は、
testファイルがディスクに残っていることを示しています。lost+found test
リファレンス
ディスクボリュームの使用中に問題が発生した場合は、「ディスクボリュームに関する FAQ」でトラブルシューティング情報をご参照ください。
ディスクサイズが要件を満たさなくなった場合、またはディスクがいっぱいになった場合は、「ディスク永続ボリュームを拡張する」をご参照ください。
ディスク使用量をリアルタイムで監視するには、「コンテナーストレージモニタリングの概要」をご参照ください。