熟悉 vSphere Cloud Native Storage 环境的一些基本概念。

Kubernetes 群集
运行 Kubernetes 控制层面和 Worker 节点服务的虚拟机群集。在 Kubernetes 群集上,您可以部署容器化的应用程序。应用程序可以是有状态的和无状态的。
Pod
Pod 是由一个或多个共享存储和网络等资源的容器组成的组。Pod 中的容器以组的形式启动、停止和复制。
容器 Orchestrator
用于跨主机群集部署、扩展和管理容器化应用程序的开源平台,例如 Kubernetes。这些平台提供了以容器为中心的基础架构。
有状态应用程序
由于容器化应用程序从无状态发展为有状态,它们需要持久性存储。无状态应用程序不会在会话之间保存数据,与之不同的是,有状态应用程序会将数据保存到持久性存储中。保留的数据称为应用程序的状态。之后,您可以检索数据,并在下一个会话中使用该数据。大多数应用程序都是有状态的。数据库是有状态应用程序的示例。
PersistentVolume
有状态应用程序使用 PersistentVolume 存储其数据。PersistentVolume 是一个能够保留其状态和数据的 Kubernetes 卷。PersistentVolume 独立于 Pod,即使删除或重新配置 Pod,它也可以继续存在。在 vSphere 环境中,PersistentVolume 对象使用虚拟磁盘 (VMDK) 作为其备用存储。
StorageClass
Kubernetes 使用 StorageClass 定义不同的存储层,并描述不同类型的支持 PersistentVolume 的存储要求。在 vSphere 环境中,可以将存储类链接到存储策略。作为 vSphere 管理员,您可以创建存储策略来描述不同的存储要求。这些虚拟机存储策略可用作 StorageClass 定义的一部分,以便进行动态卷置备。

以下示例 YAML 文件引用之前使用 vSphere Client 创建的 Gold 存储策略。生成的持久卷 VMDK 放置在满足 Gold 存储策略要求的兼容数据存储上。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gold-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "Gold"
  
PersistentVolumeClaim
通常,应用程序或 Pod 可以通过 PersistentVolumeClaim 请求持久存储。PersistentVolumeClaim 可为 PersistentVolume 指定存储的类型和类、访问模式(ReadWriteOnce 或 ReadWriteMany)以及其他参数。然后,该请求可以在 vSphere 环境中动态置备相应的 PersistentVolume 对象和底层虚拟磁盘。
创建声明后,PersistentVolume 会自动绑定到声明。Pod 使用声明挂载 PersistentVolume 并访问存储。
删除此声明时,将删除相应的 PersistentVolume 对象和底层存储。
kind: PersistentVolumeClaim
metadata:
 name: persistent-VMDK
spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 5Gi
 storageClassName: gold-sc
StatefulSet
StatefulSet 管理有状态应用程序的部署和扩展。对于需要稳定标识符或稳定持久性存储的应用程序,StatefulSet 非常有用。您可以将 StatefulSet 配置为包含自动生成 PersistentVolumeClaim 对象的 volumeClaimTemplates 条目。