阿里雲K8S服務-資料盤擴容方案
介紹 目前容器服務Kubernetes叢集在建立的時候,可以讓客戶選擇是否掛載Worker節點的資料盤,並配置其容量;這裡的資料盤會儲存docker容器、映象、kubelet等相關資料; 這裡的資料盤與客戶應用使用的雲盤區別: 這裡的資料盤:是用來儲存docker、kubelet等容器系統服務資料的; 應用掛載雲盤:是您的應用來儲存資料的,可以通過pv、pvc掛載;
雲盤擴容方案:https://yq.aliyun.com/articles/629008
如上圖,建立叢集的時候為worker節點新增資料盤,會預設掛載在worker的/dev/vdb裝置;
ls /dev | grep vdb
vdb vdb1
df -h | grep vdb
/dev/vdb158G1.1G54G2% /var/lib/docker
mount | grep vdb
/dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/kubelet type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/docker type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/docker/plugins type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/container/docker/plugins type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/docker/overlay2 type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/container/docker/overlay2 type ext4 (rw,relatime,data=ordered) 以下各個步驟介紹如何在Kubernetes環境下為資料盤(/dev/vdb)擴容; 假設需要升級的資料盤在節點Worker1上:
- 暫停節點服務 登陸worker1,停止docker、kubelet服務:
service kubelet stop
service docker stop
關閉docker、kubelet開啟啟動:
systemctl disable kubelet
systemctl disable docker
- 打快照(已備升級失敗時恢復) 從容器叢集列表找到worker1節點:
- 從節點列表點選節點進入ecs控制檯:
- 點選本例項磁碟頁面,點選對應資料盤的“建立快照”按鈕;
- 點選左側欄的“本例項快照”,可以看到快照的建立進度;
建立快照完成,進行下一步; 3. 擴容磁碟 在ecs控制檯找到要擴容資料盤,設定擴容後容量,點選擴容。擴容成功後,控制檯磁碟列表裡即顯示擴容後的容量。 重啟節點:ecs控制檯上找到worker1,重啟節點; 4. 擴容檔案系統 登陸worker1節點: 4.1. Umount掛載目錄: 把所有掛載/dev/vdb1裝置的目錄進行umount: 檢視有哪些掛載目錄:
mount | grep vdb
/dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/kubelet type ext4 (rw,relatime,data=ordered) /dev/vdb1 on /var/lib/docker type ext4 (rw,relatime,data=ordered) 執行解除安裝目錄:
umount /var/lib/kubelet/
umount /var/lib/docker
umount /var/lib/container/
檢查解除安裝完成:
mount | grep vdb
4.2. 重置磁碟: 執行以下命令,為磁碟重新分配分割槽大小:
fdisk /dev/vdb
(依次輸入以下選項:都是預設值) :d回車 n回車 p回車 1回車 回車 回車 wq回車 具體說明參考:https://help.aliyun.com/document_detail/25452.html 執行完成檢查是否分割槽擴容成功,/dev/vdb1的大小為83885056(大約80G,最後一行)。
fdisk -l /dev/vdb
磁碟 /dev/vdb:85.9 GB, 85899345920 位元組,167772160 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 位元組 / 512 位元組 I/O 大小(最小/最佳):512 位元組 / 512 位元組 磁碟標籤型別:dos 磁碟識別符號:0x0bd82aa9
裝置 BootStartEndBlocksIdSystem /dev/vdb120481677721598388505683Linux 4.3. 擴容檔案系統: 再次檢查vdb是否被掛載(由於配置了自動掛載)
mount | grep vdb
/dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered)
執行Umount:
umount /var/lib/container
執行以下檔案系統擴容命令:
檢查檔案系統,如果被掛載會報錯;
e2fsck -f /dev/vdb1
e2fsck 1.42.9 (28-Dec-2013) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄連線性 Pass 4: Checking reference counts 第5步: 檢查簇概要資訊 /dev/vdb1: 32120/7864320 files (0.1% non-contiguous), 797997/15728384 blocks
變更檔案系統大小;
resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vdb1 to 20971264 (4k) blocks. The filesystem on /dev/vdb1 is now 20971264 blocks long. 5. 重啟節點 Enable開機啟動服務:
systemctl enable kubelet
systemctl enable docker
執行reboot 或者 到控制檯重啟woker1節點; 6. 驗證擴容 節點重啟後登陸worker1節點:
vdb 資料盤已經變成78G(配置的80G);
df -h | grep vdb
/dev/vdb178G1.1G73G2% /var/lib/docker 檢查磁碟資料是否完整:
docker images 比較擴容前後的映象資料;
檢查kubelet、docker服務執行是否正常;