故障現象一
kubelet 啟動不了,透過命令 journalctl -u kubelet 檢視日誌,報:
Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup [kubepods burstable]: failed to find subsystem mount for required subsystem: pids
故障分析
根據報錯,有用的資訊是
failed to find subsystem mount for required subsystem: pids,透過命令 ls -l /sys/fs/cgroup/systemd/kubepods/burstable/ 檢視,該目錄下沒有 pids 目錄。SupportPodPidsLimit 在 kubernetes 1。14+ 預設開啟。SupportNodePidsLimit 在 1。15+ 預設開啟。
相關 Issues:https://github。com/kubernetes/kubernetes/issues/79046
解決方法
方法一:編輯 kubelet 配置檔案,新增 ——feature-gates=SupportPodPidsLimit=false,SupportNodePidsLimit=false 引數,後面在重啟 kubelet 服務。
方法二:可以升級系統核心 5+ 版本
故障現象二
Docker daemon oci 故障,日誌報
docker: Error response from daemon: OCI runtime create failed: container_linux。go:348: starting container process caused “process_linux。go:301: running exec setns process for init caused \”exit status 40\“”: unknown。
解決方法
# 清理快取$ echo 1 > /proc/sys/vm/drop_caches # 永久生效$ echo “vm。min_free_kbytes=1048576” >> /etc/sysctl。conf$ sysctl -p # 重啟 docker 服務,讓 docker 應用核心設定$ systemctl restart docker
故障現象三
kubelet 日誌報
network plugin is not ready: cni config uninitialized
解決方法
網路外掛(flannel 或者 calico)沒有安裝或者安裝失敗。