kubeadm修改docker、kubelet、etcd的工作目錄


背景介紹

本文介紹的內容,以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 即可。

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

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

將  vim 文件中 /var/lib/kubelet 改為 /data/k8s/kubelet

Environment="KUBELET_CONFIG_ARGS=--config=/data/k8s/kubelet/config.yaml"
EnvironmentFile=-/data/k8s/kubelet/kubeadm-flags.env

移動數據到 /data/k8s/kubelet

mkdir -p /data/k8s/kubelet
mv /var/lib/kubelet/* /data/k8s/kubelet
cp -rp /data/k8s/kubelet/pki/ /var/lib/kubelet/     ##后面可能會報 證書路徑問題,故將證書拷貝回原路徑

重啟kubelet

systemctl daemon-reload
systemctl restart kubelet

 修改etcd數據目錄

使用kubeadm搭建的k8s集群,默認etcd的數據目錄為 /var/lib/etcd 。
集群運行一段時間后, 發現在系統硬盤上的etcd即占空間,又影響速度。所以將其數據目錄遷移到ssd中。

注意
修改配置文件后,etcd會自動重啟,並且導致對應機器的kubectl不可用。
所以請一台一台修改,etcd leader 節點放到最后操作,並且確保其他機器的kubectl可用。

vim /etc/kubernetes/manifests/etcd.yaml
# 翻到最下方,編輯hostPath
 volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-certs
  - hostPath:
      path: /data/k8s/etcd        # 將這個路徑改為你要更改到的路徑
      type: DirectoryOrCreate
    name: etcd-data

注意,這里不要修改command中的–data-dir。 command中的選項是控制容器中的數據目錄,我們只需要改變hostpath就可以了。

修改完成后,etcd會自動重啟,使用其他master查看etcd狀態。
這里etcd起不來是正常的,需要執行一下幾步:

  1. 刪除etcd的pod,刪除后pod會從列表中消失,這是正常現象
  2. 需把etcd的要把/var/lib/etcd/* 拷貝到更改后的目錄
  3. 重啟物理機的kubelet
  4. 查看狀態
    以上4步做完之后,etcd應該已經起來了。 注意,這里一定要先修改配置文件,在拷貝etcd數據

使用kubectl ecex 到一個etcd節點中, 查看etcd狀態,一定要等節點狀態全部健康后,在繼續操作其他節點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM