前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(译)Kubernetes 中对持久卷进行扩容

(译)Kubernetes 中对持久卷进行扩容

作者头像
崔秀龙
发布2019-07-23 11:26:49
2.1K0
发布2019-07-23 11:26:49
举报
文章被收录于专栏:伪架构师

Kubernetes v1.11 中,持久卷扩容能力升级为 Beta 阶段。这个功能让用户可以轻松的通过编辑 PVC 对象的方式修改现有卷的容量。没有这一功能之前,要对卷容量进行修改,需要要和存储后端进行手工交互,或者对 PV 以及 PVC 进行删除重建操作。持久卷不支持缩容操作。

v1.8 中卷扩展功能就已经进入 Alpha 阶段,v1.11 之前需要在 feature gate 中开启 ExpandPersistentVolumes,以及 admission 控制器 PersistentVolumeClaimResize(防止在底层存储不支持扩容的情况下对 PVC 进行扩容)。在 Kubernetes v1.11 中,这两个项目都会被缺省激活。

虽然功能已经被激活,但是集群管理员还是需要进行操作,让用户能够对自己的卷进行扩容。Kubernetes 1.11 内置了对部分卷插件的扩容支持:AWS-EBS、GCE-PD、Azure Disk、Azure File、Glusterfs、Cinder、Portworx、以及 Ceph RBD。管理员确定底层存储能够支持卷扩展之后,就可以在 StorageClass 对象中设置 allowVolumeExpansiontrue 来启用这一功能了。只有从 StorageClass 中创建的 PVC 才允许使用卷扩展:

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: standard
parameters:
 type: pd-standard
provisioner: kubernetes.io/gce-pd
allowVolumeExpansion: true
reclaimPolicy: Delete

任何从这一 StorageClass 中创建的 PVC 都能够通过编辑的方式来申请更多空间。Kubernetes 会处理 Storage 字段的变更,据此申请空间,触发卷的扩容。

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
 name: myclaim
spec:
 accessModes:
   - ReadWriteOnce
 resources:
   requests:
     storage: 8Gi #更新这一字段,修改 PVC 容量

文件系统扩展

GCE-PD、AWS-EBS、Azure Disk、Cinder 以及 Ceph RBD 这些块存储卷通常需要首先进行文件系统的扩展,然后被扩展的卷的额外空间才能为 Pod 所用。引用这些卷的 Pod 重启时,Kubernetes 会自动完成这些任务。

网络挂载的文件系统,例如 Glusterfs 和 Azure File,因为不需要进行文件系统扩展,因此可以在不重启 Pod 的情况下直接进行扩展。

只有终止引用卷的 Pod,才会触发对应文件系统的扩展,更确切地说:

  • 编辑 PVC,申请更多空间。
  • 底层存储对底层卷进行了扩展之后,PV 对象就会响应这一变化,PVC 会进入 FileSystemResizePending 状态。

可以运行 kubectl get pvc <pvc_name> -o yaml

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: myclaim
 namespace: default
 uid: 02d4aa83-83cd-11e8-909d-42010af00004
spec:
 accessModes:
 - ReadWriteOnce
 resources:
   requests:
     storage: 14Gi
 storageClassName: standard
 volumeName: pvc-xxx
status:
 capacity:
   storage: 9G
 conditions:
 - lastProbeTime: null
   lastTransitionTime: 2018-07-11T14:51:10Z
   message: Waiting for user to (re-)start a pod to finish file system resize of
     volume on node.
   status: "True"
   type: FileSystemResizePending
 phase: Bound
  • PVC 进入 FileSystemResizePending 状态,引用 PVC 的 Pod 就可以重新启动来结束文件系统在 Node 上的扩展过程了。可以通过删除和重建 Pod 的方式进行重启,也可以通过对 Deployment 的伸缩来完成这一过程。
  • 文件系统的扩展操作完成之后,PVC 会自动更新,设置为新的容量。

文件系统扩展过程中遇到任何错误,都会在 Pod 中以 Event 的形式表现出来。

在线文件系统扩展

Kubernetes v1.11 还引入了一个 Alpha 功能,叫做在线文件系统扩展。这个功能可以对一个正在被 Pod 使用的卷进行文件系统的扩展。这个功能还处于 Alpha 阶段,因此需要通过 Feature gate 启用 ExpandInUsePersistentVolumes。目前支持的有 GCE-PD、AWS-EBS、Cinder 以及 Ceph RBD。当激活这个功能后,引用被扩展的卷的 Pod 无需重启。文件系统会随着卷扩展的步骤进行扩展。文件系统的扩展只有在 Pod 引用被扩展的卷的时候才会发生,所以如果没有 Pod 引用这个卷,那么就不会进行文件系统扩展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件系统扩展
  • 在线文件系统扩展
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档