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