kubectl get nodes 报No resources found

k8s二进制安装时,使用kubectl get nodes 时报No resources found,我的/etc/docker/daemon.json里配了 "exec-opts": ["native.cgroupdriver=systemd"],还是不行

如果使用 Kubectl 命令 "kubectl get nodes" 执行时,出现 "No resources found" 的错误消息,则很有可能是因为 Kubectl 工具未能连接 Kubernetes 集群进行操作。

以下是解决该问题的几种方法:

  1. 确认你已经正确地安装和配置了 kubectl 工具。可以执行以下命令观察输出:
kubectl version

通过错误信息可以排除 kubectl 版本不兼容等问题。

如果没有安装 kubectl,请参考官方文档 https://kubernetes.io/docs/tasks/tools/install-kubectl/。

  1. 确认你已经正确地配置了集群认证信息。可以执行以下命令观察输出:
kubectl config view

通过错误信息可以排除集群认证信息不正确等问题。

  1. 确认你已经正确地连接到了 Kubernetes 集群。可以执行以下命令观察输出:
kubectl cluster-info

通过错误信息可以排除无法连接到 Kubernetes 集群等问题。

  1. 确认你的 Kubernetes 集群中存在可用的节点。可以执行以下命令观察输出:
kubectl get nodes

如果输出结果为空,则可以重新部署一些 Kubernetes 节点实例。

  1. 最后,你可以尝试重新使用 kubectl 创建一个资源,例如 pods、deployments 或 services 等,以确认 kubectl 配置的正确性。

可以使用以下命令创建一个 Nginx web 服务器的 deployment 资源:

kubectl run nginx --image=nginx --port=80

然后,使用以下命令检查 deployment 是否正常运行:

kubectl get deployments

如果 deployment 运行良好,则此时应该可以使用 kubectl get nodes 命令来获取到 Kubernetes 集群的节点信息。

如果以上方法仍无法解决问题,建议检查 Kubernetes 集群各组件是否正常运行,例如 kubelet、kube-apiserver、etcd、kube-proxy 等。

看起来可能是cgroup driver配置不正确,可以检查一下kubelet的cgroup driver是否与daemon.json里配置的一致。
也可以运行一下 systemctl status kubelet查看一下状态。