Kubernetes 遷移節點 Kubelet 資料儲存目錄

2023-10-27 12:00:52

1、概述

  預設Kubernetes節點Kubelet資料目錄在/var/lib/kubelet,如果在部署前沒有做好規劃,其實預設就儲存在系統磁碟/分割區下了,這可能會引發一些問題:

  1. 磁碟空間限制: 系統根目錄通常具有較小的磁碟空間,用於作業系統檔案和應用程式。將Kubelet資料與作業系統混合儲存可能導致磁碟空間不足,從而影響Kubelet的正常執行。

  2. 效能問題: 當Kubelet將容器映象、容器資料等儲存在與作業系統檔案混合的磁碟上時,可能會導致I/O競爭和效能下降,因為Kubelet的操作可能與系統檔案的讀寫競爭。

  3. 風險和安全性: 儲存Kubelet資料在系統根目錄中可能會增加潛在的風險和安全性問題。Kubelet資料的損壞或錯誤操作可能影響整個系統的穩定性和安全性。

  為解決這些問題,建議在部署Kubernetes節點之前仔細規劃Kubelet資料的儲存位置。通常,你可以選擇將Kubelet資料目錄放置在一個獨立的分割區或磁碟上,以確保足夠的磁碟空間、提高效能,並增強系統的安全性。這需要在Kubelet的組態檔中設定--data-dir引數來指定所需的目錄路徑。對於已部署的Kubernetes節點建議遷移節點Kubelet資料儲存目錄,遷移前務必在非生產環境中測試和驗證這些設定,以確保不會對Kubernetes叢集的正常執行產生不利影響。本文將會詳細記錄Kubernetes遷移節點Kubelet資料儲存目錄步驟。

2、已部署 Kubernetes 節點遷移 Kubelet 資料儲存目錄步驟

2.1 封鎖節點

給節點打上汙點,並驅逐在該節點上執行的Pod。
kubectl taint nodes <node-name> specialnode=exclusivenode:NoSchedule

2.2 停止節點Kubelet和Docker服務

systemctl stop kubelet
systemctl stop docker

檢視狀態:

2.3 目錄解除安裝  

umount /var/lib/kubelet/pods/*/volumes/kubernetes.io~*/*

2.4 資料備份

mkdir -p /data/k8s/
cp -r /var/lib/kubelet /data/k8s/kubelet-bak

2.5 修改節點Kubelet資料盤目錄

在Kubelet的組態檔中設定--data-dir引數來指定所需的目錄路徑,centos7作業系統修改 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 組態檔。

Environment="KUBELET_EXTRA_ARGS=--root-dir=/data/k8s/kubelet --node-ip=xxx --hostname-override=master3 "

2.6 建立kubelet資料目錄並重啟節點Kubelet和Docker服務

mkdir -p /data/k8s/kubelet
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

2.7 檢查kubelet資料目錄是否修改成功

2.8 取消節點汙點

kubectl taint nodes <node-name> specialnode-

3、總結

  遷移Kubernetes節點上的Kubelet資料儲存目錄的作用是提高系統的可維護性和效能。將Kubelet資料目錄從預設位置(通常是系統根目錄)遷移到獨立的磁碟或分割區上有助於分離系統檔案和應用資料,降低磁碟空間限制,提高效能,增加系統安全性,簡化備份和維護操作。這種遷移使得Kubelet資料的管理更加靈活,降低了風險,有助於確保Kubernetes叢集的穩定性和可靠性。

  對於已部署的Kubernetes節點建議遷移節點Kubelet資料儲存目錄,遷移前務必在非生產環境中測試和驗證這些設定,以確保不會對Kubernetes叢集的正常執行產生不利影響。