卷
大家都知道容器中的数据在磁盘上临时存储的。这样会给一些应用带来一些问题:容器崩溃后 kubelet 会重启一个容器,导致原来容器里的文件丢失。
docker 里也有这个概念,但是docker 里对卷的管理比较简单。相比而言,k8s 支持很多类型的卷。pod 可以使用多个类型的多个卷。
卷 按生命周期大体上分为 临时卷和持久卷:
- 临时卷类型的生命周期与 Pod 相同,当 Pod 不再存在时,Kubernetes 也会销毁临时卷
- 久卷可以比 Pod 的存活期长,Kubernetes 不会销毁 持久卷
对于给定 Pod 中任何类型的卷,在容器重启期间数据都不会丢失。
卷的核心是一个目录,其中可能存有数据,Pod 中的容器可以访问该目录中的数据。 所采用的特定的卷类型将决定该目录如何形成的、使用何种介质保存数据以及目录中存放 的内容。
使用卷时, 在 .spec.volumes 字段中设置为 Pod 提供的卷,并在 .spec.containers[*].volumeMounts 字段中声明卷在容器中的挂载位置。 各个卷则挂载在容器内的指定路径上, 卷不能挂载到其他卷之上,也不能与其他卷有硬链接。 Pod 配置中的每个容器必须独立指定各个卷的挂载位置。