
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 サービスを再起動しようとしましたが、うまくいきませんでした。kubeletswapoff -a
サービスを再起動する前にも試しました。
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リンク詳細については。
1Kubeconfig環境変数が設定されていない可能性があります。
export KUBECONFIG=/etc/kubernetes/admin.conf
または$HOME/.kube/config
2)ユーザーの$HOMEディレクトリにno .kube/config
ファイルがあります。.kubeまたはconfigファイルがない場合
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 コマンドを発行するか、IP の場合は ifconfig を発行することでホスト名を取得できます。
4)Dockerサービスがダウンしている可能性があるため、kubeapiポッドは実行されていません
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 サービスがダウンしている可能性があります。これは、スワップが有効になっていることが原因である可能性があります。
- sudo -i
- スワップオフ -a
- 出口
- strace -eopenat kubectl バージョン
そして、以下に示すように、もう一度 kubectl get nodes と入力できます。
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 エラーのトラブルシューティング手順について説明します。詳細については。
同様のものもチェックそれで詳細については。