解決Kubernetes集羣沒有啓動成功 1

登錄Kubernetes測試集羣時發現集羣好像沒有啓動成功。

運行kubectl cluster-info 查看集羣信息時報錯:

The connection to the server 172.26.8.11:6443 was refused - did you specify the right host or port?

第一反應Kubernetes API server沒有啓動。

運行 kubectl get pods --all-namespaces ,果然沒有查到任何Pod。

 

因爲我的Kubernetes集羣是通過kubeadm 安裝的 ,所以API server也是通過Pod來運行的,只有kubelet 是通過systemd運行的。

 

運行 systemctl status kubelet 查看,果然kubelet服務失敗,也就是並不是API Server出錯導致查不到Pod,而不是kubelet出錯無法向API Server註冊節點。

再運行 journalctl -xefu kubelet 查看systemd日誌發現真正的錯誤原因是:

failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false

運行cat /proc/swaps 檢查果然Swap沒有被關閉。

檢查我之前的安裝腳本發現,我之前修改/etc/fstab永久關閉Swap的命令有錯。

正確的禁用Swap命令如下:

# 關閉Swap,機器重啓後不生效
swapoff -a

# 修改/etc/fstab永久關閉Swap
cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')
# Redhat
sed -i "s/\/dev\/mapper\/rhel-swap/\#\/dev\/mapper\/rhel-swap/g" /etc/fstab
# CentOS
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
# 修改後重新掛載全部掛載點
mount -a

# 查看Swap
free -m
cat /proc/swaps

在Kubernetes集羣master和nodes上禁用Swap後,運行下面命令重啓Kubelet:

systemctl daemon-reload systemctl restart kubelet

再運行 kubectl get pods --all-namespaces 檢查Pod運行正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章