データベースなどのステートフル アプリケーションでは、セッション間でデータが保存されるため、データを格納するためのパーシステント ストレージが必要です。保持されたデータは、アプリケーションの状態と呼ばれます。後でデータを取得し、次のセッションで使用することができます。Kubernetes は、状態とデータを保持できるオブジェクトとしてパーシステント ボリュームを提供します。

vSphere 環境では、パーシステント ボリューム オブジェクトは、データストアにある仮想ディスクによってバッキングされます。データストアはストレージ ポリシーによって表されます。vSphere 管理者が gold などのストレージ ポリシーを作成して、スーパーバイザー 内の名前空間に割り当てると、そのストレージ ポリシーは、vSphere 名前空間 および使用可能な Tanzu Kubernetes Grid クラスタでは、一致する Kubernetes ストレージ クラスとして表示されます。

DevOps エンジニアは、このストレージ クラスをパーシステント ボリュームの要求指定で使用できます。その後、パーシステント ボリュームの要求から得たストレージを使用するアプリケーションをデプロイできます。この例では、アプリケーションのパーシステント ボリュームが動的に作成されています。

前提条件

vSphere 管理者が適切なストレージ ポリシーを作成し、そのポリシーを名前空間に割り当てていることを確認します。

手順

  1. vSphere Kubernetes 環境内の名前空間にアクセスします。
  2. ストレージ クラスを使用できることを確認します。
  3. パーシステント ボリュームの要求を作成します。
    1. パーシステント ボリュームの要求設定を含む YAML ファイルを作成します。
      この例では、ファイルは gold ストレージ クラスを参照しています。
      ReadWriteMany パーシステント ボリュームをプロビジョニングするには、 accessModesReadWriteMany に設定します。 vSphere with Tanzu での ReadWriteMany パーシステント ボリュームの作成を参照してください。
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: my-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: gold
        resources:
          requests:
              storage: 3Gi
                 
    2. Kubernetes クラスタにパーシステント ボリュームの要求を適用します。
      kubectl apply -f pvc_name.yaml
      このコマンドでは、要求のストレージ要件を満たすバッキング仮想ディスクを持つ Kubernetes パーシステント ボリュームと vSphere ボリュームが動的に作成されます。
    3. パーシステント ボリュームの要求のステータスを確認します。
      kubectl get pvc my-pvc

      出力には、ボリュームがパーシステント ボリュームの要求にバインドされていることが示されます。

      NAME     STATUS    VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
      my-pvc   Bound     my-pvc   2Gi        RWO           gold           30s
  4. パーシステント ボリュームをマウントするポッドを作成します。
    1. パーシステント ボリュームを含む YAML ファイルを作成します。
      このファイルには次のパラメータが含まれます。
      ...
      volumes:
          - name: my-pvc
            persistentVolumeClaim:
              claimName: my-pvc
    2. YAML ファイルからポッドをデプロイします。
      kubectl create -f pv_pod_name.yaml
    3. ポッドが作成されたことを確認します。
      kubectl get pod
      NAME       READY   STATUS    RESTARTS   AGE
      pod_name   1/1     Ready     0          40s

結果

設定したポッドでは、パーシステント ボリュームの要求で指定されているパーシステント ストレージが使用されます。

次のタスク

パーシステント ボリュームの健全性ステータスを監視するには、vSphere 名前空間 または Tanzu Kubernetes Grid クラスタでのボリュームの健全性の監視を参照してください。vSphere Client のパーシステント ボリュームを確認して監視するには、vSphere Client のパーシステント ボリュームの監視を参照してください。