Kubernetes(K8S)叢集常見故障及解解決方案

Kubernetes(K8S)叢集常見故障及解解決方案

故障現象一

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+ 版本

Kubernetes(K8S)叢集常見故障及解解決方案

故障現象二

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

故障現象三

Kubernetes(K8S)叢集常見故障及解解決方案

kubelet 日誌報

network plugin is not ready: cni config uninitialized

解決方法

網路外掛(flannel 或者 calico)沒有安裝或者安裝失敗。