Dawn's Blogs

分享技术 记录成长

0%

Kubernetes学习 (8) 卷 配置

Kubernetes 中卷是 Pod 的组成部分,因此卷可以在 Pod 中定义。Kubernetes 卷不是单独的对象,也不能单独创建或者删除。

卷有很多类型可以选择,包括 emptyDir(临时卷,生命周期与 Pod 相同)、hostPath(指向节点文件系统上的文件或者目录)、持久卷等。

Pod 与底层存储技术解耦

但是!!在 Kubernetes 上部署应用的开发人员不需要知道底层使用的是哪种存储技术,同理他们也不需要了解应该使用哪些类型的物理服务器来运行 Pod。所以,需要令具体的类型的存储卷与开发人员解耦,当开发入员需要一定数量的持久化存储来进行应用时,可以向 Kubernetes 请求然后 Kubernetes 再进行分配。

因此,Kubernetes 引入了两种新的资源,持久卷(Persistent Volume,PV)持久卷声明(Persistent Volume Claim)。开发人员无需向 Pod 中添加特定技术的卷,而是由集群管理员设置底层存储,创建持久卷并注册。开发人员创建持久卷声明,指定需要的容量和访问模式,Kubernetes 会自动匹配到持久卷并绑定到 PVC 中

可以声明访问模式、回收策略等。

动态声明持久卷

通过 PV 和 PVC 的配合,开发人员已经无需关心底层的存储是怎样实现的,但是还需要管理员来配置和创建持久卷。

Kubernetes 可以通过 StorageClass 来动态的执行此过程,管理员只需要定义 StorageClass 对象,系统在每次通过持久卷声明请求时创建一个新的持久卷。用户也可以再 PVC 中引用 StorageClass,并且可以指定大小和访问模式,StorageClass 对象会根据 PVC 中的要求动态的创建持久化卷并与相应的 Pod 绑定。

配置

Kubernetes 中的应用程序需要读取配置信息,ConfigMap 用于读取一般配置,而 Secret 用于读取密码等敏感信息。

ConfigMap

ConfigMap 实际上就是键值对的内容可以是字面量,也可以是完整的配置文件。应用程序无法直接读取 ConfigMap,甚至不知道其是否存在,内容通过环境变量或者传递给容器。

如果 Pod 引用了不存在的 ConifgMap,则会无法启动。

ConfigMap 相比于直接在镜像中打入环境变量更加灵活,因为 ConfigMap 可以随时更新配置信息。

Secret

Secret 也是键值对,内容通过环境变量或者传递给容器。

Secret 只会存储在节点的内存中,永远不会写入物理内存。