1. 程式人生 > 實用技巧 >修改docker和kubelet的工作目錄

修改docker和kubelet的工作目錄

背景介紹

本文介紹的內容,以docker-ce=19.03.13~centos 和 kubernetes=1.16.2 版本為例介紹,其他版本應該大同小異。

我們知道,docker-ce的預設工作目錄是/var/lib/docker,會存放docker映象檔案、容器日誌及寫到容器臨時目錄的檔案等。

kubelet的預設工作目錄是/var/lib/kubelet,會存放volume檔案(包括emptyDir volume)、plugin檔案等。

這實際存在一個風險:大量的映象檔案或容器日誌等,可能把作業系統根分割槽容量佔滿,進而導致系統crash或k8s pod被頻繁驅逐等異常發生。

我們在生產環境上,往往需要更改docker和kubelet的工作目錄,將其改到另外一塊資料盤的檔案系統上,例如下文中的“/mnt/data”目錄。

修改docker工作目錄

修改 vim /usr/lib/systemd/system/docker.service啟動檔案,新增--graph=/data/docker

ExecStart=/usr/bin/dockerd --graph=/data/docker -H fd:// --containerd=/run/containerd/containerd.sock

重啟docker

systemctl daemon-reload
systemctl restart docker

修改kubelet工作目錄

根據 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 載入/etc/sysconfig/kubelet 檔案,只需要修改 /etc/sysconfig/kubelet 即可。

KUBELET_EXTRA_ARGS="--root-dir=/data/k8s/kubelet"

重啟kubelet

systemctl daemon-reload
systemctl  restart kubelet

PS:

此時config.yaml檔案還是在/var/lib/kubelet下,需要修改為 : /data/k8s/kubelet

vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

Environment="KUBELET_CONFIG_ARGS=--config=/data/k8s/kubelet/config.yaml"