1. Kubernetes 存储卷基础

在 Kubernetes 中,存储卷(Volumes)被用于在容器间共享或存储数据。Pod 中的容器可以通过存储卷来访问这些数据,而不需要将数据持久化到容器的文件系统中,这样即便容器被删除或重启,数据也能保留。

Kubernetes 支持多种类型的存储卷,包括但不限于:

  • EmptyDir:临时目录,用于同一个 Pod 中的容器共享数据。当 Pod 被删除时,EmptyDir 中的数据也会被删除。
  • HostPath:将宿主机上的文件或目录挂载到 Pod 中。主要用于测试或开发环境,不推荐在生产环境中使用。
  • PersistentVolume(PV)和 PersistentVolumeClaim(PVC):提供了一种方式来管理存储的生命周期独立于使用它的 Pod。PV 是集群中实际的存储资源,而 PVC 是用户对存储资源的请求。
2. PersistentVolume 和 PersistentVolumeClaim
  • PersistentVolume (PV): 是集群中一块具体的存储资源,具有存储能力、访问模式、回收策略等属性。它允许集群管理员动态添加资源,而不必关心哪个用户会使用这些资源。
  • PersistentVolumeClaim (PVC): 是用户对存储资源的请求。它描述了用户想要的存储资源,如容量、访问模式等。当 Pod 需要存储资源时,会绑定到一个合适的 PVC,然后 PVC 会再绑定到一个具体的 PV。
3. 动态卷供应

为了更方便地管理存储资源,Kubernetes 提供了动态卷供应的功能。当用户创建一个 PVC,但没有匹配的 PV 可用时,动态卷供应器(StorageClass)会自动创建一个新的 PV,以满足 PVC 的要求。这样,用户就无需预先创建大量的 PV,而是根据需求动态获取存储资源。

4. 访问模式
  • ReadWriteOnce (RWO): 卷可以被单个节点以读写模式挂载。
  • ReadOnlyMany (ROX): 卷可以被多个节点以只读模式挂载。
  • ReadWriteMany (RWX): 卷可以被多个节点以读写模式挂载。

注意:并非所有类型的存储都支持所有的访问模式。

5. 回收策略

当 PVC 被删除时,关联的 PV 会根据其回收策略来决定如何处理剩余的数据:

  • Retain: 保留存储资源,由管理员手动处理。
  • Recycle: (已废弃)释放存储资源,但可能需要先清理数据。
  • Delete: 删除与 PV 关联的存储资源,通常用于动态供应的存储卷。
6. 示例
  1. 创建 PV:定义一个 PV 资源,指定其存储容量、访问模式等。
  2. 创建 PVC:定义一个 PVC,描述需要的存储资源和访问模式。
  3. Pod 使用 PVC:在 Pod 的定义中,指定其使用哪个 PVC。

通过以上步骤,可以实现在 Kubernetes 集群中灵活地管理存储资源,为应用提供可靠的持久化存储能力。

7. 学习资源
  • Kubernetes 官方文档:深入阅读官方文档,了解最新特性和最佳实践。
  • 社区论坛和博客:参与社区讨论,阅读他人的经验分享。
  • 实践操作:在本地或云环境中搭建 Kubernetes 集群,亲自操作存储卷的创建和使用。

今天的学习重点是对 Kubernetes 中存储卷和持久化存储的理解和应用,通过实践操作,加深对 Kubernetes 存储机制的认识。