10.2 基本单元:Pod Volume

Kubernetes中的最小调度单位是Pod,可以认为一个Pod是一个具体的微服务实例,它一般会包含多个容器。这些容器共享根容器Pause的网络命名空间,并可共享在Pod中声明的所有Volume。

Pod Volume是对Docker Volume的一种更高层次的抽象,属于Pod对象的一部分,面向的是应用实例Pod,而不是容器粒度。这里我们对Kubernetes中Pod Volume可以使用的Volume类型做一下简单的分类。

(1)本地存储:Emptydir、Hostpath等,是主要使用Pod运行的节点上的本地存储。

(2)网络(分布式)存储。

● In-tree(内置):awsElasticBlockStore、gcePersistentDisk/nfs等。存储插件的实现代码是放在Kubernetes代码仓库中的。

● Out-of-tree(外置):FlexVolume、CSI等网络存储Inline Volume Plugin,存储插件单独实现,特别是,CSI是Volume扩展机制的核心发展方向。

(3)Projected Volume:Secret、ConfigMap、DownwardAPI、ServiceAccountToken,将Kubernetes集群中的一些配置信息以Volume的方式挂载到Pod的容器中,即应用可以通过POSIX接口来访问这些对象中的数据。

(4)PVC与PV体系:Kubernetes中将存储资源与计算资源分开管理的核心设计。