Kubectl 获取节点 return "the server doesn't have a resource type "nodes""

Kubectl get nodes return "the server doesn't have a resource type "nodes""

我安装了 Kubernetes 并执行了 kubeadm init 并从 worker 加入。但是当我 运行 kubectl get nodes 它给出以下响应

服务器没有资源类型"nodes"

这可能是什么问题?在 /var/log/messages

中看不到任何内容

这里有什么提示吗?

在我看来,身份验证凭据设置不正确。您是否将 kubeconfig 文件 /etc/kubernetes/admin.conf 复制到 ~/.kube/config?如果您使用 kubeadm,API 服务器应该在 6443 上配置为 运行,而不是在 8080 上。您是否还可以检查 KUBECONFIG 变量是否未设置?

使用标志 --v=99 也有助于提高详细级别。另外,你是从安装了 Kubernetes master 组件的同一台机器访问,还是从外部访问?

我在尝试使用 Docker-Desktop 时收到此消息。我之前一直在用 Google Cloud 和 运行 一些 kubectl 命令做一些实验。结果是,在我的 ~/.kube/config 文件中,我仍然有与现在 non-existent GCP 集群相关的陈旧配置,并且我的默认 k8s 上下文设置为那个。

尝试以下操作:

# Find what current contexts you have
kubectl config view

我得到:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

所以现在只有一个上下文。如果此处有多个上下文,请检查它是否是您期望的设置为 current-context 的上下文。如果不更改它:

# Get rid of old contexts that you don't use 
kubectl config delete-context some-old-context

# Selecting the context that I have auth for
kubectl config use-context docker-desktop

就我而言,我想查看 pods 的描述。

当我使用 kubectl describe postgres-deployment-866647ff76-72kwf 时,错误提示 错误:服务器没有资源类型“postgres-deployment-866647ff76-72kwf”.

我更正了,在pod名称前加了pod,如下:

kubectl describe pod postgres-deployment-866647ff76-72kwf