kubernetes之常見故障排除(一)

系列目錄html

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

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

在執行kubeadm init中出現如下警告docker

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

這多是由於你的操做系統裏沒有安裝ebtables, ethtool,能夠執行如下命令安裝ubuntu

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

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

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

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

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

這多是由多種緣由引發的,最爲常見的以下:網絡

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

  • 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權限或者安裝更新的版本

相關文章
相關標籤/搜索