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

在 K8s 使用持久性存储需要以下几个步骤:
创建存储类:
指定存储的调配类型,vSphere 在创建虚机时虚拟存储时有 Think 和 Thick 种格式可以选择:
- Thin Provision:一开始的时候并不分配空间,根据虚拟硬盘的实际使用来分配空间;
- Thick Provision :一开始就分配足额空间给虚拟硬盘,Thick 要比 Thin 模式性能更好。
如果底层存储用的是 vSAN 的话,还看可以指定条带数、IO 访问限制、缓存大小等属性。
创建持久性卷声明 (Persistent Volume Claim)
持久性卷 (Persistent Volume) 是一种 K8s 对象,它对应于 vSphere 环境中的 vmdk 存储对象。持久性卷是独立于 Pod 存在的。在持久性卷声明中可以进一步定义容量大小、访问模式 (是只读还是可写) 等等。PKS 支持两种创建模式:
- 动态卷 (Dynamic Volume):管理员在创建持久卷声明时 PKS 会自动创建对应的 vmdisk 并且将它关联到持久卷上;
- 静态卷 (Static Volume):vSphere 系统管理员一开始就建好一组 vmdisk,PKS 管理员创建持久卷声明并关联相应的 vmdisk。
我们可以把 Persistent Volume Claim 理解成把逻辑持久卷和物理存储关联起来的一种机制。
在 Pod 中装载和使用持久卷
开发人员在 Pod 的 YAML 描述文件中定义持久卷的装载点 (Mount Point) ,PKS 在启动 Pod 时就会自动 Mount 这个持久卷供 Pod 使用。