亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

集群容器和容器組數據目錄掛盤轉儲

2023-09-19 05:44:38
9
0

背景

項目測試環境升級部署服務時,經常出現本地容器數據丟失,鏡像倉庫鏡像數據丟失現象,經排查容器的數據目錄/var/lib/docker,容器鏡像倉庫鏡像數據目錄/mnt/docker/registrydata以及k8s數據組目錄/var/lib/kubelet和主機根文件系統共用同一塊磁盤空間,有些團隊的服務日志沒有轉儲持續打印占用磁盤空間,導致整個根分區容量近乎占滿,出現容器數據和鏡像數據被系統刪除,進而導致pod crash或k8s pod被頻繁驅逐等問題發生。

解決措施

我們在生產環境上,需要將docker容器數據,鏡像倉庫數據,k8s本地數據目錄掛盤轉儲。

集群中數據目錄

docker-ce的默認工作目錄是/var/lib/docker,會存放docker鏡像文件、容器日志及寫到容器臨時目錄的文件等。
kubelet的默認工作目錄是/var/lib/kubelet,會存放volume文件(包括emptyDir volume)、plugin文件等。

數據目錄掛盤轉儲

以下操作需要嚴格按照順序在每個節點上操作,假如先在node01上操作:

  • 尋找一塊磁盤空間大的盤掛載的目錄

等所有被驅逐的pod都runing后再做后續步驟

df -h
/dev/sdb1              3.7T  110G  3.6T    3% /data2
/dev/sdc1              3.7T   33G  3.7T    1% /data1
/dev/sdd1              3.7T   35G  3.7T    1% /data3

比如 /data1 掛載在sdc1 盤,而且空間為3.7T,只使用了1%,我們就將容器數據 和 k8s 數據存放在此目錄下。

  • 先在節點上打上污點,驅逐已有的pod

kubectl cordon node01

kubectl drain node01 --delete-emptydir-data --ignore-daemonsets --force

等所有被驅逐的pod都runing后再做后續步驟

  • 容器數據轉儲

mkdir -p /data1/var/lib

cp -rf   /var/lib/docker     /var/lib/docker.bak

systemctl stop docker

mv /var/lib/docker   /data1/var/lib/

ln -s /data1/var/lib/docker  /var/lib/

systemctl restart docker

kubectl get pod -A -o wide | grep node01

當node01 節點上所有 pod 都running后

rm -rf /var/lib/docker.bak

 

  • k8s 容器數據轉儲

systemctl stop kubelet

cp -rf /var/lib/kubelet /var/lib/kubelet.bak

mv /var/lib/kubelet /data1/var/lib/

ln -s /data1/var/lib/kubelet  /var/lib/

systemctl restart kubelet

  • 恢復節點可調度

kubectl uncordon node01

最后檢查下所有pod都處于running狀態

鏡像數據目錄掛盤轉儲

先查看鏡像服務器所在節點地址
節點上敲命令docker images

 

登錄 173.64.48.12 節點,查詢docker-registry容器id

 

docker inspect 容器id

確認容器鏡像掛載目錄所映射的主機目錄是否在一個空間比較大的盤,如果在一個空間比較大的盤(判斷標準和容器數據目錄掛載轉儲相同),以下步驟不需要操作。

將docker-registry容器刪除
docker stop 容器 id
docker rm 容器id

掛載目錄下創建子目錄并同步鏡像數據
mkdir - p /data1/docker/registry
mv /mnt/data/registry /data1/docker/
注意:/mnt/data/registry 為當前鏡像服務器鏡像文件所在路徑

重啟啟動鏡像服務器

docker run -d -p 5000:5000 -v /data1/docker/registry:/var/lib/registry registry:v1

查看鏡像是否轉儲成功

curl -XGET 173.64.48.12:5000/v2/_catalog

0條評論
0 / 1000
l****n
3文章數
0粉絲數
l****n
3 文章 | 0 粉絲
l****n
3文章數
0粉絲數
l****n
3 文章 | 0 粉絲
原創

集群容器和容器組數據目錄掛盤轉儲

2023-09-19 05:44:38
9
0

背景

項目測試環境升級部署服務時,經常出現本地容器數據丟失,鏡像倉庫鏡像數據丟失現象,經排查容器的數據目錄/var/lib/docker,容器鏡像倉庫鏡像數據目錄/mnt/docker/registrydata以及k8s數據組目錄/var/lib/kubelet和主機根文件系統共用同一塊磁盤空間,有些團隊的服務日志沒有轉儲持續打印占用磁盤空間,導致整個根分區容量近乎占滿,出現容器數據和鏡像數據被系統刪除,進而導致pod crash或k8s pod被頻繁驅逐等問題發生。

解決措施

我們在生產環境上,需要將docker容器數據,鏡像倉庫數據,k8s本地數據目錄掛盤轉儲。

集群中數據目錄

docker-ce的默認工作目錄是/var/lib/docker,會存放docker鏡像文件、容器日志及寫到容器臨時目錄的文件等。
kubelet的默認工作目錄是/var/lib/kubelet,會存放volume文件(包括emptyDir volume)、plugin文件等。

數據目錄掛盤轉儲

以下操作需要嚴格按照順序在每個節點上操作,假如先在node01上操作:

  • 尋找一塊磁盤空間大的盤掛載的目錄

等所有被驅逐的pod都runing后再做后續步驟

df -h
/dev/sdb1              3.7T  110G  3.6T    3% /data2
/dev/sdc1              3.7T   33G  3.7T    1% /data1
/dev/sdd1              3.7T   35G  3.7T    1% /data3

比如 /data1 掛載在sdc1 盤,而且空間為3.7T,只使用了1%,我們就將容器數據 和 k8s 數據存放在此目錄下。

  • 先在節點上打上污點,驅逐已有的pod

kubectl cordon node01

kubectl drain node01 --delete-emptydir-data --ignore-daemonsets --force

等所有被驅逐的pod都runing后再做后續步驟

  • 容器數據轉儲

mkdir -p /data1/var/lib

cp -rf   /var/lib/docker     /var/lib/docker.bak

systemctl stop docker

mv /var/lib/docker   /data1/var/lib/

ln -s /data1/var/lib/docker  /var/lib/

systemctl restart docker

kubectl get pod -A -o wide | grep node01

當node01 節點上所有 pod 都running后

rm -rf /var/lib/docker.bak

 

  • k8s 容器數據轉儲

systemctl stop kubelet

cp -rf /var/lib/kubelet /var/lib/kubelet.bak

mv /var/lib/kubelet /data1/var/lib/

ln -s /data1/var/lib/kubelet  /var/lib/

systemctl restart kubelet

  • 恢復節點可調度

kubectl uncordon node01

最后檢查下所有pod都處于running狀態

鏡像數據目錄掛盤轉儲

先查看鏡像服務器所在節點地址
節點上敲命令docker images

 

登錄 173.64.48.12 節點,查詢docker-registry容器id

 

docker inspect 容器id

確認容器鏡像掛載目錄所映射的主機目錄是否在一個空間比較大的盤,如果在一個空間比較大的盤(判斷標準和容器數據目錄掛載轉儲相同),以下步驟不需要操作。

將docker-registry容器刪除
docker stop 容器 id
docker rm 容器id

掛載目錄下創建子目錄并同步鏡像數據
mkdir - p /data1/docker/registry
mv /mnt/data/registry /data1/docker/
注意:/mnt/data/registry 為當前鏡像服務器鏡像文件所在路徑

重啟啟動鏡像服務器

docker run -d -p 5000:5000 -v /data1/docker/registry:/var/lib/registry registry:v1

查看鏡像是否轉儲成功

curl -XGET 173.64.48.12:5000/v2/_catalog

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0