k8s存储卷与数据持久化(14)
时间:2020-09-23 15:52 来源:未知 作者:liangzh 点击:次
Status : Bound
Volume : pvc-5836eb47 6c77 lle8-9bab 000c29be4e28
Labels : <none>
Annotations : pv kubernetes. /b ind-completed=yes
pv . kubernetes . io/bound by controller=yes
volume .beta .kubernetes . io/storage-pr ovisioner=kubernetes.io/glusterfs
Finalizers :
Capacity :
[kubernetes . io/pvc protect 口]
5G
Access Modes : RWO
Events :
Type Reason Age From Message
Normal ProvisioningSucceeded 55s persistentvolume-controller Successfully
provisioned volume pvc-5836eb47-6c77-lle8 - 9bab-000c29be4e28 using kubernetes.
glusterfs
任何支持 PV 动态供给的存储系统都可以在定义为存储类后由 PVC 动态申请使用,这对
于难以事先预估使用到的存储空间大小及存储卷数量的使用场景尤为有用, 例如由 StatefulSet
控制器管理pod 对象时,存储卷是必备资源 ,且随着规模的变动,存储卷的数量也会随之变动。
另外,用户也可以使用云端存储提供的 PV 态供给机制,如 AWS EBS , AzureDisk
Cinder GCEPersistentDisk 等,将 Kubernetes 部署于 IaaS 云端时,此种存储方式使用的较多。
各类云存储动态供给的具体使用方式请参考相关的使用于册
5.5>PV和PVC的生命周期
PV是Kubernetes 集群的存储资源,而 PVC 则代表着资源需求。创建 PVC 时对 PV发
起的使用申请,即为“绑定”。PV 和PVC是一一对应的关系,可用于响应 PVC 申请的 PV
必须能够容纳 PVC 的请求条件,它们二者的交互遵循如下生命周期
1.存储供给
存储供给(provisioning )是指为 PVC 准备可用 PV 的机制。Kubernetes 支持两种 PV
给方式 :静态供给和动态供给
( 1 )静态供给
静态供给是指由集群管理员手动创建一定数量的 PV 资源供应方式。这些 PV 负责处
理存储系统的细节,并将其抽象成易用的存储资源供用户使用。静态提供的 PV 可能属于某
存储类( StorageClass ),也可能没有存储 ,这一点取决于管理员的设定。
( 2)动态供给
不存在某静态的 PV 匹配到用户的 PVC 申请时, Kubernetes 集群会尝试为 PVC 动态创
建符合需求的 PV ,此即为动态供给。这种方式依赖于存储类的辅助, PVC 必须向一个事先
存在的存储类发起动态分配 PV 请求,没有指定存储类的 PVC 请求会被禁止使用动态创
PV 的方式
另外,为了支持使用动态供给机制,集群管理员需要为准入控制器( admission controller)
启用“ DefaultStorageClass ”选项,这一点通过--admission-control ”命令行选项为 API Server
进行设定即可,后文会对准入控制器予以描述
2.存储绑定
用户基于一系列存储需求和访问模式定义好 PVC 后, Kubernetes 系统的控制器即会为
其查找匹配的 ,并于找到之后在 二者之间建立起关联关系,而后它们二者之间的状态
即转为“绑定”( Binding)。PV 是为 PVC 而动态创PV 专用于其 PVC
若是无法为 PVC 找到可匹配的PV ,则 PVC 一直处于未绑定( unbound )状态,直到
有符合条件的 PV 出现并完成绑定方才可
( 1 )存储使用(Using)
Pod 资源基于 persistenVolumeClaim卷类型的定义,将选定 PVC关联为存储卷,而后
即可为内部的容器所使用,对于支持多种访问模式的存储卷来说,用户需要额外指定要使
用的模式。一旦完成将存储卷挂载至 Pod 对象内的容器中,其应用即可使用关联的 PV 提供
的存储空间
( 2 ) PVC 保护( Protection)
为了避免使用中的存储卷被移除而导致数据丢失, Kubernetes 1.9 版本起引入了
PVC 保护机制 启用了此特性后,万一有用户删除了仍处于某pod 资源使用中的 PV
时, Kubernetes 不会立即予以移除,而是推迟到不再被任何 Pod 资源使用后方才执行删除操作。
处于此种阶段的PVC 资源的 tatus 宇段为"Termination",并且其 Finalizers 字段中包含" kubernetes.io/pvc-protection" (责任编辑:liangzh) |