摘要:同时登录控制台,发现展示容量也增大到了。最稳定的扩容方案是先停止应用层服务解除挂载目录,再进行数据卷扩容。此时,和依然相互,对应的已经从云主机中卸载,处于可用状态。
本文档主要描述如何在 UK8S 中扩容 UDisk 类型的 PVC,包括在线扩容和离线扩容两种场景。
UK8S Node 节点实例的创建时间必须晚于 2020 年 5 月,不满足此条件的节点,则必须先对 Node 节点进行先关机,再开机操作。
Kubernetes版本不低于 1.14,如集群版本是 1.14 及 1.15,必须在三台 Master 节点 /etc/kubernetes/apiserver
文件中配置
--feature-gates=ExpandCSIVolumes=true
,并通过 systemctl restart kube-apiserver
重启
APIServer。并需要在node节点中修改/etc/kubernetes/kubelet
文件中配置,增加--feature-gates=ExpandCSIVolumes=true
,执行systemctl restart kubelet
重启 kubelet。对于 1.14
版本的集群,如果需要在线扩容(pod 不重启),需要同时配置 ExpandInUsePersistentVolumes=true
的特性开关。1.13 及以下版本不支持该特性,1.16
及以上版本无需配置;
CSI-UDisk版本不低于 20.08.1,CSI 版本更新及升级请查看:CSI 更新记录及升级指南;
扩容时声明的期望容量大小必须是 10 的整数倍,单位为 Gi;
只支持动态创建的 PVC 扩容,且 storageClass 必须显示声明可扩容(见后文);
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-udisk-ssd
provisioner: udisk.csi.ucloud.cn # provisioner 必须为 udisk.csi.ucloud.cn
parameters:
type: "ssd"
fsType: "ext4"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true # 必须声明该存储类支持可扩容特性
2.2 通过该存储类创建PVC,并挂载到Podkind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: udisk-volume-expand
spec:
accessModes:
- ReadWriteOnce
storageClassName: csi-udisk-ssd
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Pod
metadata:
name: udisk-expand-test
labels:
app: udisk
spec:
containers:
- name: http
image: uhub.service.ucloud.cn/ucloud/nginx:1.17.10-alpine
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: udisk
mountPath: /data
volumes:
- name: udisk
persistentVolumeClaim:
claimName: udisk-volume-expand
Pod启动后,我们分别查看下 PV、PVC 以及容器内的文件系统大小,可以发现,目前都是10Gi
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-25b83584-35de-43e4-ad23-c1fc638a09e2 10Gi RWO Delete Bound default/udisk-volume-expand ssd-csi-udisk 2m26s
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
udisk-volume-expand Bound pvc-25b83584-35de-43e4-ad23-c1fc638a09e2 10Gi RWO ssd-csi-udisk 2m30s
# kubectl exec -it udisk-expand-test -- df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/vdc 9.8G 37M 9.7G 1% /data
...
2.3 在线扩容 PVC执行 kubectl edit pvc udisk-volume-expand
,将 spec.resource.requests.storage
改成 20Gi, 保存后退出,
大概在一分钟左右,PV、PVC 以及容器内的文件系统大小容量属性都变成了 20Gi。
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-25b83584-35de-43e4-ad23-c1fc638a09e2 20Gi RWO Delete Bound default/udisk-volume-expand ssd-csi-udisk 2m26s
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
udisk-volume-expand Bound pvc-25b83584-35de-43e4-ad23-c1fc638a09e2 20Gi RWO ssd-csi-udisk 2m30s
# kubectl exec -it udisk-expand-test -- df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/vdc 20G 37M 19.7G 1% /data
...
同时登录UDisk控制台,发现 UDisk 展示容量也增大到了 20Gi。这样我们完成了Pod不重启,服务不停机的数据卷在线扩容。
2.4 离线扩容 PVC(推荐)在上面的示例中,我们完成了数据卷的在线扩容。但在高 IO 的场景下,Pod 不重启进行数据卷扩容,有小概率导致文件系统异常。最稳定的扩容方案是先停止应用层服务、解除挂载目录,再进行数据卷扩容。下面我们演示下如何进行停服操作。
上文步骤 2.3完成的时候,我们有一个 Pod 且挂载了一个 20Gi 的数据卷,现在我们需要对数据卷进行停服扩容。
基于上文的示例 yaml,去掉 PVC 相关的内容,多带带创建一个名为 udisk-expand-test 的 yaml,只保留 Pod 的相关信息。然后删除 Pod,但保留 PVC 和 PV。# kubectl delete po udisk-expand-test
pod "udisk-expand-test" deleted
此时,PV 和 PVC 依然相互 Bound,对应的 UDisk 已经从云主机中卸载,处于可用状态。
修改 PVC 信息,将 spec.resource.requests.storage 改成 30Gi, 保存并退出。等待一分钟左右后,执行 kubectl get pv
,当 PV 的容量增长到 30Gi后,重建 Pod。需要注意的是,此时执行 kubectl get pvc
的时候,返回的 PVC
容量依然是 20Gi,这是因为文件系统尚未扩容完毕,PVC 处于FileSystemResizePending 状态。
# kubectl edit pvc udisk-volume-expand
persistentvolumeclaim/udisk-volume-expand edited
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-25b83584-35de-43e4-ad23-c1fc638a09e2 30Gi RWO Delete Bound default/udisk-volume-expand ssd-csi-udisk 20m
# kubectl create -f udisk-expand-test.yml
当 Pod 重新创建成功后,可以发现,PV、PVC 的容量大小都是 30Gi,同时在容器中执行 df 看到的对应文件系统容量也是 30Gi。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/126713.html
摘要:宋体自年被开源以来,很快便成为了容器编排领域的标准。宋体年月,乐心医疗的第一个生产用集群正式上线。所以于年推出后,乐心医疗的运维团队在开会讨论之后一致决定尽快迁移到。Kubernetes 自 2014 年被 Google 开源以来,很快便成为了容器编排领域的标准。因其支持自动化部署、大规模可伸缩和容器化管理等天然优势,已经被广泛接纳。但由于 Kubernetes 本身的复杂性,也让很多企业的...
摘要:请您使用前务必确认可以接受该风险。创建并与关联创建并与关联需要与相对应。在中使用在中使用在中使用 在UK8S中使用UDISK本篇目录1. 存储类 StorageClass2. 创建持久化存储卷声明 PVC3. 在 Pod 中使用 PVCUK8S支持直接在集群中使用UDisk作为持久化存储卷。备注:所有云主机均支持 SSD/SATA UDisk,如果节点的云主机类型为快杰,则也支持 RSSD ...
摘要:节点资源预留导致的浪费。虚拟节点实现了和这两大容器产品的无缝对接,丰富了集群的弹性能力。单个虚拟节点计算资源理论无上限,无需担心容量问题。通过虚拟节点及,可以用最小的资源成本,来应对高峰期的任务压力,提升整体任务效率。随着云原生概念的深入人心,越来越多的企业开始着手基于容器相关技术来部署其应用,Serverless也开始在企业IT基础构建中发挥出越来越重要的作用。UCloud 先后推出了开箱...
摘要:详细请见产品价格产品概念使用须知名词解释漏洞修复记录集群节点配置推荐模式选择产品价格操作指南集群创建需要注意的几点分别是使用必读讲解使用需要赋予的权限模式切换的切换等。UK8S概览UK8S是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kubernetes集群自身的搭建及维护等运维类工作。了解使用UK8S为了让您更快上手使用,享受UK...
摘要:会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。如何识别由创建的云资源由创建的云资源名称,都遵循明确的命名规范,具体详见命名规范简要说明如下名称,如名称为的云主机,是这个集群的节点。容器云UK8S使用必读注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过U...
摘要:注意通过创建的云主机云盘等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致运行不正常或数据丢失风险,可以通过将资源释放或解绑删除。会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过UK8S将资源释放...
阅读 121·2024-11-07 18:25
阅读 130169·2024-02-01 10:43
阅读 792·2024-01-31 14:58
阅读 768·2024-01-31 14:54
阅读 82585·2024-01-29 17:11
阅读 2894·2024-01-25 14:55
阅读 1932·2023-06-02 13:36
阅读 2875·2023-05-23 10:26