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

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

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

前提条件

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

手順

  1. vSphere Kubernetes 環境内の名前空間にアクセスします。
  2. ストレージ クラスを使用できることを確認します。
  3. パーシステント ボリュームの要求を作成します。
    1. パーシステント ボリュームの要求設定を含む YAML ファイルを作成します。
      この例では、ファイルは gold ストレージ クラスを参照しています。
      ReadWriteMany パーシステント ボリュームをプロビジョニングするには、 accessModesReadWriteMany に設定します。
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: my-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: gold
        resources:
          requests:
              storage: 3Gi
                 
    2. TKG クラスタにパーシステント ボリュームの要求を適用します。
      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

結果

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