有状态应用程序(例如数据库)在会话之间保存数据,并需要持久存储来存储数据。保留的数据称为应用程序的状态。之后,您可以检索数据,并在下一个会话中使用该数据。Kubernetes 以能够保留其状态和数据的对象形式提供持久卷。

在 vSphere 环境中,持久卷对象由位于数据存储上的虚拟磁盘提供支持。数据存储由存储策略表示。vSphere 管理员创建存储策略(例如 gold)并将其分配给 主管 中的命名空间后,该存储策略将在 vSphere 命名空间 和任何可用的 TKG 集群中显示为匹配的 Kubernetes 存储类。

作为 DevOps 工程师,您可以在持久卷声明规范中使用存储类。然后,可以部署使用持久卷声明中存储的应用程序。在此示例中,应用程序的持久卷是动态创建的。

前提条件

确保 vSphere 管理员已创建适当的存储策略并将该策略分配给命名空间。

过程

  1. 在 vSphere Kubernetes 环境中访问您的命名空间。
  2. 验证存储类是否可用。
  3. 创建持久卷声明。
    1. 创建包含持久卷声明配置的 YAML 文件。
      在此示例中,该文件引用 gold 存储类。
      要置备 ReadWriteMany 持久卷,请将 accessModes 设置为 ReadWriteMany
      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. 创建挂载持久卷的 pod。
    1. 创建包含持久卷的 YAML 文件。
      该文件包含以下参数。
      ...
      volumes:
          - name: my-pvc
            persistentVolumeClaim:
              claimName: my-pvc
    2. 从该 YAML 文件部署 pod。
      kubectl create -f pv_pod_name.yaml
    3. 验证是否已创建 pod。
      kubectl get pod
      NAME       READY   STATUS    RESTARTS   AGE
      pod_name   1/1     Ready     0          40s

结果

您配置的 pod 使用持久卷声明中描述的持久存储。