
Kubernetes 叢集早期運作正常,在重新啟動主節點 (1.0.0.0) 後執行 kubectl 指令開始出現問題。當我運行kubectl get nodes
命令時,出現以下錯誤。
# kubectl get nodes
The connection to the server 1.0.0.0:6443 was refused - did you specify the right host or port?
當我連接到主節點(1.0.0.0
)時,連接埠 6443 未開啟以接受連接。netstat -lntp|grep 6443
沒有輸出。 Kubelet 服務處於運作狀態,輸出systemctl status kubelet
沒有顯示任何可疑內容。
嘗試重新啟動 kubelet 服務但沒有成功。swapoff -a
重啟kubelet服務之前也嘗試過。
我是否缺少任何其他接受 6443 連接埠連線的服務?或者這是 kubelet 的工作但沒有這樣做?請幫忙。
注意:我的IP位址屏蔽為1.0.0.0,實際IP是不同的。到處只使用 Centos。
答案1
檢查以下可能的解決方案:
journalctl -xeu
首先查看kubelet輸出的日誌,檢查是否error while dialing dial unix /var/run/cri-dockerd.sock: connect: no such file or directory
重新啟動並啟用cri-dockerd 服務像下面這樣:
sudo systemctl enable cri-dockerd.service
sudo systemctl restart cri-dockerd.service then
sudo systemctl start kubelet
它可能對你有用,請查看github連結了解更多。
1)Kubeconfig 環境變數可能未設定。
export KUBECONFIG=/etc/kubernetes/admin.conf
或者$HOME/.kube/config
2)使用者的$HOME目錄有no .kube/config
檔案。如果您沒有 .kube 或設定文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf HOME/.kube/config sudo chown (id -u):$(id -g)
$HOME/.kube/config
或者,您也可以像這樣匯出 KUBECONFIG 變數:
export KUBECONFIG=$HOME/.kube/config
3)上面的設定檔中配置的伺服器/連接埠是錯誤的。它與主伺服器的 IP/主機名稱相同嗎?如果沒有,你複製了嗎?你可能想解決這個問題。
順便說一句,您可以透過在 cli 上發出 hostname 命令來取得主機名稱。或 ifconfig 的 ip。
4)Docker 服務可能已關閉,因此 kubeapi pod 未運行
sudo systemctl start docker
sudo systemctl start kubelet
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown (id -u):(id -g) $HOME/.kube/config
5)Kubelet 服務可能已關閉。這可能是由於啟用了交換:
- 須藤-i
- 交換-a
- 出口
- strace -eopenat kubectl 版本
您可以再次輸入 kubectl getnodes ,如下所示。
6)可能是另一個原因'磁碟空間':
查看“df -h”
,無覆蓋層或 shm(安裝在/var/lib/docker…
)已列出,直到您增加可用磁碟空間。
7)按照下面類似的流程來解決您的問題
掌握
kubeadm 重置 kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.211.40 --kubernetes-version=v1.18.0
kubeadm join 192.168.211.40:6443 --token s7apx1.mlxn2jkid6n99fr0 \
--discovery-token-ca-cert-hash sha256:2fa9da39110d02efaf4f8781aa50dd25cce9be524618dc7ab91a53e81c5c22f8
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
節點1
$ kubeadm reset
$ kubeadm join 192.168.211.40:6443 --token s7apx1.mlxn2jkid6n99fr0 \
--discovery-token-ca-cert-hash sha256:2fa9da39110d02efaf4f8781aa50dd25cce9be524618dc7ab91a53e81c5c22f8
節點2
$ kubeadm reset
$ kubeadm join 192.168.211.40:6443 --token s7apx1.mlxn2jkid6n99fr0 \
--discovery-token-ca-cert-hash sha256:2fa9da39110d02efaf4f8781aa50dd25cce9be524618dc7ab91a53e81c5c22f8
掌握
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 5m18s v1.18.6
node1 Ready <none> 81s v1.18.6
node2 Ready <none> 43s v1.18.6
$ scp /root/.kube/config [email protected]:/root/.kube/config
$ scp /root/.kube/config [email protected]:/root/.kube/config
8)如果您仍然遇到問題,請嘗試以下操作:
重啟實例後,iptables 可能會導致問題。
sudo su
iptables -P INPUT ACCEPT ALL
iptables -F
另請參閱此文件描述了排除 kubectl 錯誤的步驟了解更多。
另請檢查類似的所以了解更多。