データベースなどのステートフル アプリケーションでは、セッション間でデータが保存されるため、データを格納するためのパーシステント ストレージが必要です。保持されたデータは、アプリケーションの状態と呼ばれます。後でデータを取得し、次のセッションで使用することができます。Kubernetes は、状態とデータを保持できるオブジェクトとしてパーシステント ボリュームを提供します。
vSphere 環境では、パーシステント ボリューム オブジェクトは、データストアにある仮想ディスクによってバッキングされます。データストアはストレージ ポリシーによって表されます。vSphere 管理者が gold などのストレージ ポリシーを作成して、スーパーバイザー内の名前空間に割り当てると、そのストレージ ポリシーは、vSphere 名前空間および使用可能な TKG クラスタでは、一致する Kubernetes ストレージ クラスとして表示されます。
DevOps エンジニアは、このストレージ クラスをパーシステント ボリュームの要求指定で使用できます。その後、パーシステント ボリュームの要求から得たストレージを使用するアプリケーションをデプロイできます。この例では、アプリケーションのパーシステント ボリュームが動的に作成されています。
前提条件
vSphere 管理者が適切なストレージ ポリシーを作成し、そのポリシーを名前空間に割り当てていることを確認します。
手順
- vSphere Kubernetes 環境内の名前空間にアクセスします。
- ストレージ クラスを使用できることを確認します。
- パーシステント ボリュームの要求を作成します。
- パーシステント ボリュームの要求設定を含む YAML ファイルを作成します。
この例では、ファイルは gold ストレージ クラスを参照しています。ReadWriteMany パーシステント ボリュームをプロビジョニングするには、
accessModes
をReadWriteMany
に設定します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce storageClassName: gold resources: requests: storage: 3Gi
- TKG クラスタにパーシステント ボリュームの要求を適用します。
kubectl apply -f pvc_name.yaml
このコマンドでは、要求のストレージ要件を満たすバッキング仮想ディスクを持つ Kubernetes パーシステント ボリュームと vSphere ボリュームが動的に作成されます。 - パーシステント ボリュームの要求のステータスを確認します。
kubectl get pvc my-pvc
出力には、ボリュームがパーシステント ボリュームの要求にバインドされていることが示されます。
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE my-pvc Bound my-pvc 2Gi RWO gold 30s
- パーシステント ボリュームの要求設定を含む YAML ファイルを作成します。
- パーシステント ボリュームをマウントするポッドを作成します。
- パーシステント ボリュームを含む YAML ファイルを作成します。
このファイルには次のパラメータが含まれます。
... volumes: - name: my-pvc persistentVolumeClaim: claimName: my-pvc
- YAML ファイルからポッドをデプロイします。
kubectl create -f pv_pod_name.yaml
- ポッドが作成されたことを確認します。
kubectl get pod
NAME READY STATUS RESTARTS AGE pod_name 1/1 Ready 0 40s
- パーシステント ボリュームを含む YAML ファイルを作成します。
結果
設定したポッドでは、パーシステント ボリュームの要求で指定されているパーシステント ストレージが使用されます。