kubernetes之常見故障排除(一)


系列目錄

由由種種原因,在安裝或者使用kubernetes的過程中,可能會遇到各種各樣的問題.本篇按照官網的介紹羅列出一些常見的故障,以幫助快速解決一些常見的錯誤.

安裝賽程中出現ebtables or some similar executable not found

在執行kubeadm init中出現以下警告

[preflight] WARNING: ebtables not found in system path
[preflight] WARNING: ethtool not found in system path

這可能是因為你的操作系統里沒有安裝ebtables, ethtool,可以執行以下命令安裝

  • 對於ubuntu/debian用戶,執行apt install ebtables ethtool

  • 對於centos/Fedora用戶,執行yum install ebtables ethtool

執行kubeadm init時掛起waiting for the control plane to become ready

如題,在執行kubeadm init后,等到出現下面內容后命令一直掛起

[apiclient] Created API client, waiting for the control plane to become ready

這可能是由多種原因引起的,最為常見的如下:

  • 網絡連接問題.請排查網絡連接是否正常.

  • kubelet 使用的默認的cgroup driver和docker使用的不一樣,通過查看(/var/log/messages)或者執行journalctl -u kubelet看看是否有以下錯誤信息:

error: failed to run Kubelet: failed to create kubelet:
  misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"

如果是這樣,可以嘗試重新安裝docker來解決,也可以通過更改kubelet的默認配置來手動與docker匹配,詳情參看這里

執行kubeadm reset時命令掛起Removing kubernetes-managed containers

sudo kubeadm reset
[preflight] Running pre-flight checks
[reset] Stopping the kubelet service
[reset] Unmounting mounted directories in "/var/lib/kubelet"
[reset] Removing kubernetes-managed containers
(block)

這可能是由於docker中斷引起的,可以通過journalctl -fu docker來查看docker的輸出日志幫助排查問題.一般情況下可以嘗試以下命令來解決問題

sudo systemctl restart docker.service
sudo kubeadm reset

pod的狀態是RunContainerError, CrashLoopBackOff 或 Error

剛剛執行過kubeadm init,不應該有pod的狀態為以上中的狀態之一(正常情況下都應該是Running)

  • 如果執行kubeadm init后出現以上狀態,請到官方倉庫提出問題. coredns (或者kube-dns)在部署之前狀態是Pending

  • 如果在部署了網絡組件(coredns或者kube-dns)之后仍然會出現以上狀態,這很可能是你安裝的網絡組件的問題,你可以對它授予更高的RBAC權限或者安裝更新的版本


免責聲明!

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



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