日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

K8S中手动扩容云盘数据卷

發(fā)布時(shí)間:2024/8/23 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K8S中手动扩容云盘数据卷 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹:

云盤(pán)數(shù)據(jù)卷擴(kuò)容包括以下幾個(gè)部分:

云盤(pán)物理空間擴(kuò)容,需要在云盤(pán)控制臺(tái)操作;
文件系統(tǒng)擴(kuò)容,需要掛載云盤(pán)到一個(gè)物理節(jié)點(diǎn)手動(dòng)操作;
PV、PVC Size更新,需要更新StorageClass、PVC;

注意:擴(kuò)容云盤(pán)前需要為云盤(pán)打快照,以預(yù)防升級(jí)失敗導(dǎo)致數(shù)據(jù)丟失;

云盤(pán)目前無(wú)法做到在線擴(kuò)容,需要重啟應(yīng)用才可以實(shí)現(xiàn),可以通過(guò)兩種方法實(shí)現(xiàn)云盤(pán)擴(kuò)容。下面以集群中部署Zookeeper為例介紹兩種擴(kuò)容方式,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

暫停應(yīng)用方式:

如果應(yīng)用可以暫停服務(wù),可以先停掉應(yīng)用(刪除),手動(dòng)對(duì)每個(gè)依賴數(shù)據(jù)盤(pán)進(jìn)行擴(kuò)容,然后再啟動(dòng)應(yīng)用。缺點(diǎn)是:應(yīng)用會(huì)暫停一定時(shí)間;

上面應(yīng)用使用了3個(gè)20Gi的云盤(pán),分別掛載在3個(gè)pod上。目標(biāo)為把三個(gè)云盤(pán)擴(kuò)容到30Gi,主要步驟:

  • 刪除應(yīng)用負(fù)載;
  • 云盤(pán)控制臺(tái)在線擴(kuò)容云盤(pán);
  • 掛載云盤(pán)到某節(jié)點(diǎn)進(jìn)行文件系統(tǒng)擴(kuò)容;
  • 更新PV、PVC的Size參數(shù);
  • 重啟應(yīng)用;
  • 1. 刪除應(yīng)用:

    刪除zookeeper statefulset對(duì)象;

    # 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. 云盤(pán)擴(kuò)容:

    根據(jù)云盤(pán)文檔,分別對(duì)3塊云盤(pán)進(jìn)行擴(kuò)容:

    https://help.aliyun.com/document_detail/113316.html

    https://help.aliyun.com/document_detail/25452.html

    注意:擴(kuò)容云盤(pán)的同時(shí)也要完成對(duì)文件系統(tǒng)的擴(kuò)容。

    4. 擴(kuò)容PV、PVC

    編輯pvc、pv所使用的StorageClass,配置allowVolumeExpansion: true標(biāo)簽;

    # 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

    可見(jiàn)pv的大小已經(jīng)更新為30Gi,pvc的大小會(huì)在Pod啟動(dòng)后自動(dòng)更新;

    5. 重新創(chuàng)建應(yīng)用:

    # 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

    上面輸出日志可以看出,文件系統(tǒng)已經(jīng)擴(kuò)容到30G,pv pvc的size也擴(kuò)容到30G;

    逐個(gè)Pod升級(jí)方式:

    由多個(gè)Pod運(yùn)行的服務(wù),可以通過(guò)一個(gè)一個(gè)pod升級(jí)的方式實(shí)現(xiàn)業(yè)務(wù)不中斷,而只是Running pod數(shù)量暫時(shí)減少。

    還是以zookeeper為例,使用3個(gè)20Gi的云盤(pán),分別掛載在3個(gè)pod上。目標(biāo)為把三個(gè)云盤(pán)擴(kuò)容到40Gi:

    主要步驟:

  • 修改某個(gè)Pod所對(duì)應(yīng)pv的Zoneid label,然后刪除pod;
  • 登陸云盤(pán)控制臺(tái)在線擴(kuò)容云盤(pán)(擴(kuò)容前最好對(duì)云盤(pán)打快照,容災(zāi));
  • 掛載云盤(pán)到某節(jié)點(diǎn)進(jìn)行文件系統(tǒng)擴(kuò)容;
  • 更新PV、PVC 的Size參數(shù),以及Pv的ZoneId Lable;
  • 對(duì)其他Pod重復(fù)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,對(duì)應(yīng)的PV為d-8vbhscszlr47tgn0eheb;

    更新PV Label,

    如果pv中已經(jīng)有如下label,則把zone對(duì)應(yīng)的值改為”原來(lái)value -none“,即配置一個(gè)不存在的zone,讓pod無(wú)法調(diào)度成功;
    如果pv中沒(méi)有如下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

    這時(shí)刪除的pod一直處于Pending狀態(tài):

    # 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. 云盤(pán)擴(kuò)容:

    根據(jù)云盤(pán)文檔,分別對(duì)3塊云盤(pán)進(jìn)行庫(kù)容:

    https://help.aliyun.com/document_detail/113316.html

    https://help.aliyun.com/document_detail/25452.html

    注意:擴(kuò)容云盤(pán)的同時(shí)也要完成對(duì)文件系統(tǒng)的擴(kuò)容。

    4. 擴(kuò)容PV、PVC

    編輯pvc、pv所使用的StorageClass,配置allowVolumeExpansion: true標(biāo)簽;

    # 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

    可見(jiàn)pv的大小已經(jīng)更新為40Gi,pvc的大小會(huì)在Pod啟動(dòng)后自動(dòng)更新;

    恢復(fù)PV的Lable,把zoneId的值恢復(fù)之前的value,刪除相應(yīng)labels(若之前沒(méi)有這些labels):

    labels:failure-domain.beta.kubernetes.io/region: cn-zhangjiakoufailure-domain.beta.kubernetes.io/zone: cn-zhangjiakou-a

    檢查容器掛載文件系統(tǒng)大小,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

    可見(jiàn)文件系統(tǒng)、pv、pvc都已經(jīng)實(shí)現(xiàn)了擴(kuò)容;

    5. 對(duì)其他pod所對(duì)應(yīng)的pvc、pv、云盤(pán)進(jìn)行上述擴(kuò)容


    原文鏈接
    本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

    總結(jié)

    以上是生活随笔為你收集整理的K8S中手动扩容云盘数据卷的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。