k8s存储卷与数据持久化(15)
时间:2020-09-23 15:52 来源:未知 作者:liangzh 点击:次
3.存储回收( Reclaiming)
完成存储卷的使用目标之后, 即可删 PVC 对象以便进行资源回收 不过,至于如
何操作则取决于 PV 的回收策略.目前,可用的回收策略有 tained Recyced和Deleted
( 1 )留存( Retain)
留存策略意味着在删除 PVC 之后, Kubernetes 系统不会自动删除PV ,而仅仅是将
它置于"释放”(relesed )状态。不过,此种状态的 PV 尚且不能被其他 PVC 申请所绑定,
因为此前的申请生成的数据仍然存在,需要由管理员于动决定其后续处理方案 这就
意味着,如果想要再次使用此 PV 资源 ,则需要由管理员按下面的步骤手动执行删除操作
1)删除 PV ,这之后,此PV数据依然留存于外部的存储之上
2)手工清理存储系统上依然留存的数据
3)手工清除存储系统级的存储卷(例如, RBD 存储系统上的 image )以释放空间,以
便再次创建,或者直接将其重新创建为 PV
( 2)回收( recycle)
如果可被底层存储插件支持,资源回收策略会在存储卷上执行数据删除操作并让 PV资源
再次变为可被Claim。另外,管理员也可以配置一个自定义的回收器 Pod 模板,以便执行
自定义的回收操作。不过,此种回收策略行将废弃
(3)删除( Delete)
对于支持 Deleted 回收策略的存储插件来说,在 PVC 被删除后会直接移除 PV 对象,同
时移除的还有PV相关的外部存储系统上的存储资产(asset)。支持这种操作的存储系统有
AWS EBS , GCE PD、Azure Disk、Cinder。动态创建的PV资源的回收策略取决于相关存
储类上的定义,存储类上相关的默认策略为 Delete ,大多数情况下,管理员都需要按用户期
望的处理机修改默认策略 ,以免导致数据非计划内的
4. 扩展 PVC
Kubernetes 1.8 版本起 加了扩PV 间的特性, 截至目前,它所支持的扩 PVC
机制的存储卷共有 以下几种
gcePersistentDisk
awsElasticBlockStore
Cinder
glusterfs
rbd
PersistentVolumeClaimResize 准入插件负责对支持空间大小变动 的存储卷执行更多
的验证操作,管理员需要事先启用此插件才能使用 PVC 机制,那些将"allowVolumeExpansion"字段的值设置为"true"的存储类,
即可动态扩展存储卷空间。随后,用户改动Claim 请求更大的空间即能触发底层 PV 间扩展从而带来 PVC 存储卷的扩展。
对于包含文件系统的存储卷来说,只有在有新的 Pod 资源基于读写模式开始使用 PVC
时才会执行文件系统的大小调整操作。换句话说,如果某被扩展的存储卷已经由 Pod 资源
所使用,则需要重建此 Pod 对象才能触发文件系统大小的调整操作 支持空间调整的文件
系统仅有XFS EXT3 EXT4
6> downwardAPI 存储卷
很多时候,应用程序需要基于其所在的环境信息设定运行特性等,这类环境信息包括
点及集群的部分详细属性信息等,例 Nginx 可根据节点的 CPU 核心数量自动设
定要启动的 worker 进程数, JVM 虚拟机可根据节点内存资源自动设定其堆内存大小
地,托管运行于 Kubernetes Pod对象中的容器化应用偶尔也需要获取其 Pod 象的
IP 、主机名、标签 注解、 rn 、请求 CPU 及内存资源量及其限额,甚至是 Pod 所在的
节点名称等,容器可以通过环境变量或 downwardAPI 存储卷访问此类信息,不过,标签和
注解仅支持通过存储卷暴露给容器
6.1>环境变量式元数据注入
引用 downwardAPI 元数据信息的常用方式之一是使用容器 的环境变量 ,它通过在
va ueFrom 字段中嵌 field Ref resourceFieldRef 字段来引用相应的数据源 不过,通常
只有常量类的属性才能够通过环境变量注入到容器中,毕竟,在进程启动完成后将无法再向
其告知变量值的变动 于是,环境变量也就不支持中 更新操作
可通过 fieldRef 字段引用的信息具体如下
spec.nodeName :节点名称
status.hostIP :节点 IP 地址
metadata name: Pod 对象的名称 (责任编辑:liangzh) |