有状态应用程序(例如数据库)在会话之间保存数据,并需要持久存储来存储数据。保留的数据称为应用程序的状态。之后,您可以检索数据,并在下一个会话中使用该数据。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
- 创建挂载持久卷的 pod。
- 创建包含持久卷的 YAML 文件。
该文件包含以下参数。
...
volumes:
- name: my-pvc
persistentVolumeClaim:
claimName: my-pvc
- 从该 YAML 文件部署 pod。
kubectl create -f pv_pod_name.yaml
- 验证是否已创建 pod。
NAME READY STATUS RESTARTS AGE
pod_name 1/1 Ready 0 40s
结果
您配置的 pod 使用持久卷声明中描述的持久存储。