K8S中手动扩容云盘数据卷
介绍:
云盘数据卷扩容包括以下几个部分:
云盘物理空间扩容,需要在云盘控制台操作;
文件系统扩容,需要挂载云盘到一个物理节点手动操作;
PV、PVC Size更新,需要更新StorageClass、PVC;
注意:扩容云盘前需要为云盘打快照,以预防升级失败导致数据丢失;
云盘目前无法做到在线扩容,需要重启应用才可以实现,可以通过两种方法实现云盘扩容。下面以集群中部署Zookeeper为例介绍两种扩容方式,Zookeeper集群如下:
# kubectl get pod
NAME READY STATUS RESTARTS AGE
zookeeper-default-zookeeper-0 1/1 Running 0 2m55s
zookeeper-default-zookeeper-1 1/1 Running 0 2m14s
zookeeper-default-zookeeper-2 1/1 Running 0 94s# kubectl get pvc| grep zoo
datadir-zookeeper-default-zookeeper-0 Bound d-8vb5teafaoa80ia7affg 20Gi RWO alicloud-disk-efficiency 3m12s
datadir-zookeeper-default-zookeeper-1 Bound d-8vb60faf6epslbctnzka 20Gi RWO alicloud-disk-efficiency 2m31s
datadir-zookeeper-default-zookeeper-2 Bound d-8vbidmq57w4df6k84zem 20Gi RWO alicloud-disk-efficiency 111s# kubectl get pv| grep zoo
d-8vb5teafaoa80ia7affg 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 3m17s
d-8vb60faf6epslbctnzka 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-1 alicloud-disk-efficiency 2m33s
d-8vbidmq57w4df6k84zem 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-2 alicloud-disk-efficiency 107s
暂停应用方式:
如果应用可以暂停服务,可以先停掉应用(删除),手动对每个依赖数据盘进行扩容,然后再启动应用。缺点是:应用会暂停一定时间;
上面应用使用了3个20Gi的云盘,分别挂载在3个pod上。目标为把三个云盘扩容到30Gi,主要步骤:
- 删除应用负载;
- 云盘控制台在线扩容云盘;
- 挂载云盘到某节点进行文件系统扩容;
- 更新PV、PVC的Size参数;
- 重启应用;
1. 删除应用:
删除zookeeper statefulset对象;
# kubectl delete sts zookeeper-default-zookeeper# kubectl get pvc | grep zoo
datadir-zookeeper-default-zookeeper-0 Bound d-8vb6ie0kwtyynpf4gu4l 20Gi RWO alicloud-disk-efficiency 22m
datadir-zookeeper-default-zookeeper-1 Bound d-8vbhscszlr47rbot0boc 20Gi RWO alicloud-disk-efficiency 21m
datadir-zookeeper-default-zookeeper-2 Bound d-8vb444t0f8xnicj9c2ov 20Gi RWO alicloud-disk-efficiency 21m# kubectl get pv | grep zoo
d-8vb444t0f8xnicj9c2ov 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-2 alicloud-disk-efficiency 21m
d-8vb6ie0kwtyynpf4gu4l 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 22m
d-8vbhscszlr47rbot0boc 20Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-1 alicloud-disk-efficiency 21m
2.3. 云盘扩容:
根据云盘文档,分别对3块云盘进行扩容:
https://help.aliyun.com/document_detail/113316.html
https://help.aliyun.com/document_detail/25452.html
注意:扩容云盘的同时也要完成对文件系统的扩容。
4. 扩容PV、PVC
编辑pvc、pv所使用的StorageClass,配置allowVolumeExpansion: true标签;
# kubectl edit sc alicloud-disk-efficiency# kubectl get sc alicloud-disk-efficiency -o yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:creationTimestamp: "2019-09-05T12:30:27Z"name: alicloud-disk-efficiencyresourceVersion: "1675896"selfLink: /apis/storage.k8s.io/v1/storageclasses/alicloud-disk-efficiencyuid: f1071bcc-cfd8-11e9-81cd-00163e0804c2
parameters:type: cloud_efficiency
provisioner: alicloud/disk
reclaimPolicy: Delete
volumeBindingMode: Immediate
更新PVC的Size为30Gi:
# kubectl patch pvc datadir-zookeeper-default-zookeeper-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
persistentvolumeclaim/datadir-zookeeper-default-zookeeper-0 patched
# kubectl patch pvc datadir-zookeeper-default-zookeeper-1 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
persistentvolumeclaim/datadir-zookeeper-default-zookeeper-1 patched
# kubectl patch pvc datadir-zookeeper-default-zookeeper-2 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
persistentvolumeclaim/datadir-zookeeper-default-zookeeper-2 patched# kubectl get pvc | grep zoo
datadir-zookeeper-default-zookeeper-0 Bound d-8vb6ie0kwtyynpf4gu4l 20Gi RWO alicloud-disk-efficiency 51m
datadir-zookeeper-default-zookeeper-1 Bound d-8vbhscszlr47rbot0boc 20Gi RWO alicloud-disk-efficiency 50m
datadir-zookeeper-default-zookeeper-2 Bound d-8vb444t0f8xnicj9c2ov 20Gi RWO alicloud-disk-efficiency 49m# kubectl get pv | grep zoo
d-8vb444t0f8xnicj9c2ov 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-2 alicloud-disk-efficiency 49m
d-8vb6ie0kwtyynpf4gu4l 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 51m
d-8vbhscszlr47rbot0boc 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-1 alicloud-disk-efficiency 50m
可见pv的大小已经更新为30Gi,pvc的大小会在Pod启动后自动更新;
5. 重新创建应用:
# kubectl get pod
NAME READY STATUS RESTARTS AGE
zookeeper-default-zookeeper-0 1/1 Running 0 94s
zookeeper-default-zookeeper-1 1/1 Running 0 64s
zookeeper-default-zookeeper-2 1/1 Running 0 39s# kubectl exec -ti zookeeper-default-zookeeper-0 sh
# df -h |grep zoo
/dev/vdb 30G 45M 30G 1% /var/lib/zookeeper# kubectl get pvc | grep zoo
datadir-zookeeper-default-zookeeper-0 Bound d-8vb6ie0kwtyynpf4gu4l 30Gi RWO alicloud-disk-efficiency 56m
datadir-zookeeper-default-zookeeper-1 Bound d-8vbhscszlr47rbot0boc 30Gi RWO alicloud-disk-efficiency 56m
datadir-zookeeper-default-zookeeper-2 Bound d-8vb444t0f8xnicj9c2ov 30Gi RWO alicloud-disk-efficiency 55m# kubectl get pv | grep zoo
d-8vb444t0f8xnicj9c2ov 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-2 alicloud-disk-efficiency 55m
d-8vb6ie0kwtyynpf4gu4l 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 56m
d-8vbhscszlr47rbot0boc 30Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-1 alicloud-disk-efficiency 56m
上面输出日志可以看出,文件系统已经扩容到30G,pv pvc的size也扩容到30G;
逐个Pod升级方式:
由多个Pod运行的服务,可以通过一个一个pod升级的方式实现业务不中断,而只是Running pod数量暂时减少。
还是以zookeeper为例,使用3个20Gi的云盘,分别挂载在3个pod上。目标为把三个云盘扩容到40Gi:
主要步骤:
- 修改某个Pod所对应pv的Zoneid label,然后删除pod;
- 登陆云盘控制台在线扩容云盘(扩容前最好对云盘打快照,容灾);
- 挂载云盘到某节点进行文件系统扩容;
- 更新PV、PVC 的Size参数,以及Pv的ZoneId Lable;
- 对其他Pod重复1-4步骤;
1. 修改PV的ZoneId
# kubectl get pod zookeeper-default-zookeeper-0 -oyaml | grep pers -C 1- name: datadirpersistentVolumeClaim:claimName: datadir-zookeeper-default-zookeeper-0# kubectl get pvc datadir-zookeeper-default-zookeeper-0
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
datadir-zookeeper-default-zookeeper-0 Bound d-8vbhscszlr47tgn0eheb 20Gi RWO alicloud-disk-efficiency 21m
上述日志得出zookeeper-default-zookeeper-0 使用的pvc为:datadir-zookeeper-default-zookeeper-0,对应的PV为d-8vbhscszlr47tgn0eheb;
更新PV Label,
如果pv中已经有如下label,则把zone对应的值改为”原来value -none“,即配置一个不存在的zone,让pod无法调度成功;
如果pv中没有如下label,则添加这些lables到pv;
#kubectl edit pv d-8vbhscszlr47tgn0eheblabels:failure-domain.beta.kubernetes.io/region: cn-zhangjiakoufailure-domain.beta.kubernetes.io/zone: cn-zhangjiakou-a-none
删除Pod:zookeeper-default-zookeeper-0
# kubectl delete pod zookeeper-default-zookeeper-0
这时删除的pod一直处于Pending状态:
# kubectl get pod
NAME READY STATUS RESTARTS AGE
zookeeper-default-zookeeper-0 0/1 Pending 0 9s
zookeeper-default-zookeeper-1 1/1 Running 0 24m
zookeeper-default-zookeeper-2 1/1 Running 0 24m
2.3. 云盘扩容:
根据云盘文档,分别对3块云盘进行库容:
https://help.aliyun.com/document_detail/113316.html
https://help.aliyun.com/document_detail/25452.html
注意:扩容云盘的同时也要完成对文件系统的扩容。
4. 扩容PV、PVC
编辑pvc、pv所使用的StorageClass,配置allowVolumeExpansion: true标签;
# kubectl edit sc alicloud-disk-efficiency# kubectl get sc alicloud-disk-efficiency -o yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:creationTimestamp: "2019-09-05T12:30:27Z"name: alicloud-disk-efficiencyresourceVersion: "1675896"selfLink: /apis/storage.k8s.io/v1/storageclasses/alicloud-disk-efficiencyuid: f1071bcc-cfd8-11e9-81cd-00163e0804c2
parameters:type: cloud_efficiency
provisioner: alicloud/disk
reclaimPolicy: Delete
volumeBindingMode: Immediate
更新PVC的Size为40Gi:
# kubectl patch pvc datadir-zookeeper-default-zookeeper-0 -p '{"spec":{"resources":{"requests":{"storage":"40Gi"}}}}'
persistentvolumeclaim/datadir-zookeeper-default-zookeeper-0 patched# kubectl get pvc | grep datadir-zookeeper-default-zookeeper-0
datadir-zookeeper-default-zookeeper-0 Bound d-8vbhscszlr47tgn0eheb 20Gi RWO alicloud-disk-efficiency 29m# kubectl get pv | grep datadir-zookeeper-default-zookeeper-0
d-8vbhscszlr47tgn0eheb 40Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 29m
可见pv的大小已经更新为40Gi,pvc的大小会在Pod启动后自动更新;
恢复PV的Lable,把zoneId的值恢复之前的value,删除相应labels(若之前没有这些labels):
labels:failure-domain.beta.kubernetes.io/region: cn-zhangjiakoufailure-domain.beta.kubernetes.io/zone: cn-zhangjiakou-a
检查容器挂载文件系统大小,pv、pvc大小:
# kubectl exec -ti zookeeper-default-zookeeper-0 sh
# df -h | grep zoo
/dev/vdb 40G 48M 40G 1% /var/lib/zookeeper
# kubectl get pvc | grep datadir-zookeeper-default-zookeeper-0
datadir-zookeeper-default-zookeeper-0 Bound d-8vbhscszlr47tgn0eheb 40Gi RWO alicloud-disk-efficiency 33m# kubectl get pv | grep datadir-zookeeper-default-zookeeper-0
d-8vbhscszlr47tgn0eheb 40Gi RWO Delete Bound default/datadir-zookeeper-default-zookeeper-0 alicloud-disk-efficiency 33m
可见文件系统、pv、pvc都已经实现了扩容;
5. 对其他pod所对应的pvc、pv、云盘进行上述扩容
原文链接
本文为云栖社区原创内容,未经允许不得转载。
K8S中手动扩容云盘数据卷相关推荐
- 阿里云服务器如何扩容云盘?
阿里云服务器如何扩容云盘? 在控制台选择实例旁边的"云盘",点击最右边的"更多"-"云盘扩容" 选择是否"在线扩容"以及 ...
- windows系统,设备和驱动器中的wps云盘,如何删除?
问题:windows系统,设备和驱动器中的wps云盘,如何删除? 第一步:电脑右下角,鼠标右键点击wps图标 第二步:点击关闭wps云盘. 第三步:回到设备和驱动器,查看wps云盘图标已关闭.
- 群晖NAS同步阿里云盘数据
安装阿里云盘webdav 由于群晖官方套件中心没有直接同步阿里云盘的套件,需要安装第三方套件,安装方法如下: 添加第三方套件社群 以管理员登录NAS,打开套件中心--设置--套件来源--新增--&qu ...
- 阿里云Linux热扩容云盘(growpart和resize2fs工具)
场景: 使用中的云盘在不挂载不格式化情况下进行扩容(适用于系统盘和数据盘) 目录 1.扩容物理盘 2.安装growpart和resize2fs工具 3.检查扩容磁盘属性 4.使用growpart工具扩 ...
- Linux中的Docker容器的数据卷
一.数据卷的概念 1.数据卷是宿主机中的一个目录或者文件 2.当容器目录和数据卷目录绑定后,对方的修改会立即同步 3.一个数据卷可以被多个容器同时挂载 4.一个容器也可以挂载多个数据卷 二.数据卷的作 ...
- 阿里云扩容云盘(CentOS 7系统)
一.前文 阿里云ECS服务器,原本购买了40GB的云盘,用了不到一年,就不够用了 只能加钱扩容了 扩容后发现好像没生效,只能花时间研究研究 二.查看分区容量 [root@iZ2zej1nogjvot6 ...
- 天翼企业云盘 数据资产管理、共享协作赋能
随着云计算.人工智能.大数据时代的到来,数据爆炸性增长,云存储服务受到越来越多的个人和企业的重视及欢迎.各个品牌的云存储网盘的功能和行业解决方案也在不断提升.云存储分为公有云.私有云.混合云,公有云主 ...
- CentOS 7 阿里云扩容云盘
一.扩容物理盘 1.进入阿里云找到要扩容的云盘 2.点击选择在线扩容,点击磁盘扩容按步骤完成付款 二.安装growpart工具 yum install cloud-utils-growpart# 如果 ...
- 如何删除计算机中的“天翼云盘(32位)”图标
前言 天翼云盘更新之后,我的电脑里面会出现一个删不掉的图标,更可怕的是,就算拆卸天翼云盘,这个图标也不会消失,那么我们来看看怎么把它删掉 1.打开注册表编辑器 打开注册表编辑器(不知道怎么打开看别人教 ...
最新文章
- 【Java】StopWatch任务执行时间监视器
- idea swagger生成接口文档_spring boot集成Swagger-UI接口文档
- swoole的安装(已经做测试成功)
- 以阿里云RPA为例,来告诉你到底RPA是什么?
- My Lead route attach and detach issue
- 认证令牌_Java应用程序的简单令牌认证
- 通用Makefile实现
- GTK+图形化应用程序开发学习笔记(一)—概述
- java odbc 驱动_Java java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
- MQTT服务器的搭建与MQTT客户端的使用
- Node.js meitulu图片批量下载爬虫1.01版
- 2022-01-05 网工基础(十九)NAT基本原理与配置
- uc手机浏览器 手机模拟_移动端页面调试工具——UC浏览器开发者版
- 更新中国地区ip列表
- matplotlib如何绘制圆
- 智能客服工单系统与工单管理系统的区别
- vsphere虚拟服务器备份,使用云祺虚拟机备份软件快速备份VMware vSphere虚拟机
- [笔记]VMware常见问题
- intelx79服务器芯片组,流言终结者!Intel X79规格全面介绍
- 蓝奏云下载地址解析API[直链]
热门文章
- python中math模块函数_Python常用的一些内建函数和math模块函数
- php数组o m n mn,O(m + n)和O(mn)之间的区别?
- sap fiori导出列表到excel_介绍一种Fiori标准应用的增强方式
- 高度为5的3阶b树含有的关键字个数_数据结构要考得好,你心里要有B树
- php用不了for循环吗,php中的这两个for循环有什么区别吗?
- hive udf 分组取top1_Hive中分组取前N个值的实现-row_number()
- 系统分析与控制_质量体系文件:测量系统分析控制程序
- iis php网站500错误原因_如何解决iis php 500错误问题
- 泰山医学院计算机文化基础,泰医 专 计算机 16级.pdf
- 红旗linux安装oracle,Redflag Linux安装Oracle 10gR2 RAC记事