Kubelet は実行状態ですが、kubectl はサーバーへの接続を拒否するエラーを出します

Kubelet は実行状態ですが、kubectl はサーバーへの接続を拒否するエラーを出します

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 エラーのトラブルシューティング手順について説明します。詳細については。

同様のものもチェックそれで詳細については。

関連情報