目录
1. 解释什么是 Kubernetes 的 Volume。
(1)容器中的文件在磁盘上是临时存放的,这给在其中运行的某些应用程序会带来一些问题:
① 其一是当容器在崩溃时,kubelet 会以干净的状态重启重启容器,原有容器中的文件会丢失。
② 第二个问题是,我们会在同一 Pod 中运行多个容器,而这些容器之间会有共享文件的情况出现。解决这些问题的办法是使用 Kubernetes Volume。
(2)
Kubernetes
支持很多类型的卷。Pod 可以同时使用任意数目的卷类型。
-
临时卷类型的生命周期与 Pod 相同,但持久卷可以比
Pod 有更长的存活期。
- 当 Pod 被删除时,临时卷也会被删除,但持久卷会保留在磁盘上。
- 对于给定 Pod 中任何类型的卷,当该 Pod 中的任何容器重启期间 Pod 中的数据都不会丢失。
2. 解释 emptyDir 卷类型的特征。
-
当
Pod 被分派到某个 Node 上时,emptyDir 卷就会被创建,并且在 Pod 运行期间一直会存在。就像其名称表示的那样,emptyDir 卷最初是空的。
- 尽管 Pod 中的容器挂载 emptyDir 卷的路径可能会有不同,但这些容器都可以读写 emptyDir 卷中相同的文件。
- 当 Pod 因为某些原因被从节点上删除时,emptyDir 卷中的数据也会被永久删除。
- 容器崩溃并不会导致 Pod 从节点上移除,因此在容器崩溃期间 emptyDir 卷中的数据是安全的。
3. 解释 hostPath 卷类型的特征。
- hostPath 卷能将主机节点文件系统上的文件或目录直接挂载到 Pod 中。
- 但要注意的是,要尽可能避免使用这个类型的卷,它会限制 Pod 的迁移性。
4. 解释 PV 卷类型的特征。
-
PV
(PersistentVolume,持久卷),是集群中的一块存储,可以由管理员事先供应,或者使用存储类(Storage Class)来动态供应。
- PV 持久卷和节点一样,都是
集群资源,PV 持久卷和普通的 Volume 类似,也是使用卷插件来实现的,只是它
拥有独立于任何使用
PV 的 Pod
的生命周期。
5. 什么是 PVC,如何使用它。
-
PVC
(PersistentVolumeClaim,持久卷申领)表达的是用户对存储的请求。概念上与 Pod 类似。
- Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。
- Pod 可以请求特定数量的资源(CPU 和内存);同样 PVC 申领也可以请求特定的大小和访问模式。
-
Pod
将 PVC
申领当做存储卷来使用。集群会检视 PVC 申领,找到所绑定的卷,并为 Pod 挂载该卷。
- 对于支持多种访问模式的卷,用户要在 Pod 中以卷的形式使用申领时指定期望的访问模式。一旦用户有了申领对象并且该申领已经被绑定,则所绑定的 PV 卷在用户仍然需要它期间一直属于该用户。
6. PV 有哪几种访问模式,详细说明。
PV 的四种访问模式:
①
ReadWriteOnce:卷可以被一个节点以读写方式挂载。该访问模式也允许运行在同一节点上的多个 Pod 访问卷。
②
ReadOnlyMany:卷可以被多个节点以只读方式挂载。
③
ReadWriteMany:卷可以被多个节点以读写方式挂载。
④
ReadWriteOncePod:卷可以被单个 Pod 以读写方式挂载。
7. 解释 PV 的回收策略。
PV 的回收策略:
①
Retain:需要手动回收
②
Recycle:执行的基本操作是 rm -rf /thevolume/*
③
Delete:对于支持 Delete 回收策略的卷插件,删除动作会将 PersistentVolume 对象从 K8s 中移除,同时也会从外部基础设施(如 AWS EBS 或 GCE PD 卷)中移除所关联的存储资源。