资讯专栏INFORMATION COLUMN

UDisk 动态扩容 容器云 UK8S

ernest.wang / 1469人阅读

摘要:同时登录控制台,发现展示容量也增大到了。最稳定的扩容方案是先停止应用层服务解除挂载目录,再进行数据卷扩容。此时,和依然相互,对应的已经从云主机中卸载,处于可用状态。

UDisk 动态扩容

本篇目录

1. 限制条件2. 扩容UDisk演示

本文档主要描述如何在 UK8S 中扩容 UDisk 类型的 PVC,包括在线扩容和离线扩容两种场景。

1. 限制条件

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 必须显示声明可扩容(见后文);

2. 扩容UDisk演示

2.1 创建UDisk存储类,显式声明可扩容
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,并挂载到Pod
kind: 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平台建设实践

    摘要:宋体自年被开源以来,很快便成为了容器编排领域的标准。宋体年月,乐心医疗的第一个生产用集群正式上线。所以于年推出后,乐心医疗的运维团队在开会讨论之后一致决定尽快迁移到。Kubernetes 自 2014 年被 Google 开源以来,很快便成为了容器编排领域的标准。因其支持自动化部署、大规模可伸缩和容器化管理等天然优势,已经被广泛接纳。但由于 Kubernetes 本身的复杂性,也让很多企业的...

    testHs 评论0 收藏0
  • UK8S中使用UDISK 容器 UK8S

    摘要:请您使用前务必确认可以接受该风险。创建并与关联创建并与关联需要与相对应。在中使用在中使用在中使用 在UK8S中使用UDISK本篇目录1. 存储类 StorageClass2. 创建持久化存储卷声明 PVC3. 在 Pod 中使用 PVCUK8S支持直接在集群中使用UDisk作为持久化存储卷。备注:所有云主机均支持 SSD/SATA UDisk,如果节点的云主机类型为快杰,则也支持 RSSD ...

    ernest.wang 评论0 收藏451
  • UCloud UK8S虚拟节点 让用户不再担心集群没有资源

    摘要:节点资源预留导致的浪费。虚拟节点实现了和这两大容器产品的无缝对接,丰富了集群的弹性能力。单个虚拟节点计算资源理论无上限,无需担心容量问题。通过虚拟节点及,可以用最小的资源成本,来应对高峰期的任务压力,提升整体任务效率。随着云原生概念的深入人心,越来越多的企业开始着手基于容器相关技术来部署其应用,Serverless也开始在企业IT基础构建中发挥出越来越重要的作用。UCloud 先后推出了开箱...

    Tecode 评论0 收藏0
  • 容器UK8S】新手指导

    摘要:详细请见产品价格产品概念使用须知名词解释漏洞修复记录集群节点配置推荐模式选择产品价格操作指南集群创建需要注意的几点分别是使用必读讲解使用需要赋予的权限模式切换的切换等。UK8S概览UK8S是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kubernetes集群自身的搭建及维护等运维类工作。了解使用UK8S为了让您更快上手使用,享受UK...

    Tecode 评论0 收藏0
  • 容器 UK8S】使用必读:授权给UK8S产品的管理权限、请勿随意操作由UK8S创建的资源、请尽

    摘要:会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。如何识别由创建的云资源由创建的云资源名称,都遵循明确的命名规范,具体详见命名规范简要说明如下名称,如名称为的云主机,是这个集群的节点。容器云UK8S使用必读注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过U...

    Tecode 评论0 收藏0
  • 容器 UK8S】操作指南:使用必读之授权给UK8S产品的管理权限,规避将业务部署在Master

    摘要:注意通过创建的云主机云盘等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致运行不正常或数据丢失风险,可以通过将资源释放或解绑删除。会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过UK8S将资源释放...

    Tecode 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<