应用现代化

PKS 演示 — 持久性存储

PKS 为容器应用提供了持久性存储 (Persistent Volume) 机制,支持在 K8s 集群中部署无状态 (stateless) 的或有状态 (stateful) 的应用。

 

在每个 K8s Worker 节点上都运行着一个 Kubelet 进程,用来处理 Master 节点下发到本节点的任务,管理 Pod 和其中的容器。Kubelet 会在 API Server 上注册节点信息,定期向 Master 汇报节点资源使用情况。可以把 Kubelet 理解成一个 agent,是 Node 上的 Pod 管家。vSphere Cloud Provider 是 K8s 的一个插件,它为 K8s Pod 提供了 vSphere 的存储服务。

 

在 K8s 使用持久性存储需要以下几个步骤:

1.  创建存储类:
指定存储的调配类型,vSphere 在创建虚机时虚拟存储时有 Think 和 Thick 种格式可以选择:

  • Thin Provision:一开始的时候并不分配空间,根据虚拟硬盘的实际使用来分配空间;
  • Thick Provision :一开始就分配足额空间给虚拟硬盘,Thick 要比 Thin 模式性能更好。

如果底层存储用的是 vSAN 的话,还看可以指定条带数、IO 访问限制、缓存大小等属性。

 

2. 创建持久性卷声明 (Persistent Volume Claim)
持久性卷 (Persistent Volume) 是一种 K8s 对象,它对应于 vSphere 环境中的 vmdk 存储对象。持久性卷是独立于 Pod 存在的。在持久性卷声明中可以进一步定义容量大小、访问模式 (是只读还是可写) 等等。PKS 支持两种创建模式:

  • 动态卷 (Dynamic Volume):管理员在创建持久卷声明时 PKS 会自动创建对应的 vmdisk 并且将它关联到持久卷上;
  • 静态卷 (Static Volume):vSphere 系统管理员一开始就建好一组 vmdisk,PKS 管理员创建持久卷声明并关联相应的 vmdisk。

我们可以把 Persistent Volume Claim  理解成把逻辑持久卷和物理存储关联起来的一种机制。

 

3. 在 Pod 中装载和使用持久卷
开发人员在 Pod 的 YAML 描述文件中定义持久卷的装载点 (Mount Point) ,PKS  在启动 Pod 时就会自动 Mount 这个持久卷供 Pod 使用。

 

请大家看一下 PKS 持久性存储的演示。