故障一
故障現象
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
html
故障分析
根據報錯,有用的信息是 failed to find subsystem mount for required subsystem: pids
,經過命令 ls -l /sys/fs/cgroup/systemd/kubepods/burstable/
查看,該目錄下沒有 pids
目錄。linux
SupportPodPidsLimit
在 kubernetes 1.14+
默認開啓。SupportNodePidsLimit 在 1.15+
默認開啓。git
相關Issues:https://github.com/kubernetes/kubernetes/issues/79046github
解決方法
-
方法一:編輯 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.
web
解決方法
# 清理緩存
$ 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
docker
解決方法
網絡插件(flannel 或者 calico)沒有安裝或者安裝失敗。api
故障四
故障現象
kubelet 日誌報 Failed to connect to apiserver: the server has asked for the client to provide credentials
緩存
故障分析
從上面 kubelet 日誌信息能得出,kubelet 客戶端證書已過時,致使 Node節點狀態處於 NotReady
。微信
也能夠經過命令 openssl x509 -noout -enddate -in {證書路徑}
來查看證書到期日期。網絡
解決方法
kubeadm 部署的 Kubernetes 解決方法
kubernetes 1.15+ 版本能夠直接經過命令 kubeadm alpha certs renew <cert_name>
更新。
kubernetes 小於 1.15 版本的,能夠參考 https://github.com/yuyicai/update-kube-cert
項目更新
二進制部署的 Kubernetes 解決方法
# 刪除舊的 kubelet 證書文件
$ rm -f /opt/kubernetes/ssl/kubelet*
# 刪除 kubelet kubeconfig 文件
$ rm -f /opt/kubernetes/cfg/kubelet.kubeconfig
# 重啓 kubelet 服務,讓 master 從新頒發客戶端證書
$ systemctl restart kubelet
參考連接
-
https://adoyle.me/Today-I-Learned/k8s/k8s-deployment.html
熱門文章推薦
-
Kubernetes 臨時存儲須要限制嗎? -
Linux Used內存到底哪裏去了? -
K8S故障排查指南- but volume paths are still present on disk -
Kubernetes故障排查指南-分析容器退出狀態碼 -
Kubernetes 升級填坑指南(一)
-
Kubernetes Pod 故障歸類與排查方法
最後
-
歡迎您加我微信【 ypxiaozhan01】,拉您進技術羣,一塊兒交流學習... -
歡迎您關注【 YP小站】,學習互聯網最流行的技術,作個專業的技術人...
本文分享自微信公衆號 - YP小站(ypxiaozhan)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。