【问题标题】:Kubernetes "the server doesn't have a resource type deployments"Kubernetes“服务器没有资源类型部署”
【发布时间】:2019-08-06 14:43:29
【问题描述】:

我是 Kubernetes 的新手。

我无法使用 kubectl 获取部署,但我可以在 kubernetes 仪表板上查看所有部署。我该如何解决这个问题?

user@master:~$ kubectl get deployments
error: the server doesn't have a resource type "deployments"

kubernetes 版本: 1.12

kubectl 版本: 1.13

kubectl api 版本:

apiregistration.k8s.io/v1

apiregistration.k8s.io/v1beta1

v1

api 资源:

user@master:~$ kubectl api-resources
NAME                     SHORTNAMES   APIGROUP                 NAMESPACED               
KIND
bindings                                                       true         
Binding
componentstatuses        cs                                    false        
ComponentStatus
configmaps               cm                                    true         
ConfigMap
endpoints                ep                                    true         
Endpoints
events                   ev                                    true         
Event
limitranges              limits                                true         
LimitRange
namespaces               ns                                    false        
Namespace
nodes                    no                                    false        
Node
persistentvolumeclaims   pvc                                   true         
PersistentVolumeClaim
persistentvolumes        pv                                    false        
PersistentVolume
pods                     po                                    true         
Pod
podtemplates                                                   true         
PodTemplate
replicationcontrollers   rc                                    true         
ReplicationController
resourcequotas           quota                                 true         
ResourceQuota
secrets                                                        true         
Secret
serviceaccounts          sa                                    true         
ServiceAccount
services                 svc                                   true         
Service
apiservices                           apiregistration.k8s.io   false        
APIService

感谢您的帮助。

------------编辑 1------------

您好@EduardoBaitello,感谢您的快速回复。问题与权限无关。

user@master:~$ kubectl auth can-i get deployments Warning: the server doesn't have a resource type 'deployments' yes user@master:~$ kubectl auth can-i get deployment Warning: the server doesn't have a resource type 'deployment' yes user@master:~$ kubectl auth can-i get namespaces yes user@master:~$ kubectl auth can-i get pods yes

所以我认为这不是一个重复的问题。

user@master:~$ kubectl get po --namespace=kube-system NAME READY STATUS RESTARTS AGE calico-kube-controllers-7c6b876df8-nk7nm 1/1 Running 2 118d calico-node-8lt9f 1/1 Running 3 118d calico-node-d9r9l 1/1 Running 2 118d calico-node-ffqlj 1/1 Running 2 118d dns-autoscaler-57ff59dd4c-c9tjv 1/1 Running 2 118d kube-apiserver-node1 1/1 Running 3 118d kube-controller-manager-node1 1/1 Running 6 118d kube-dns-84467597f5-hf2fn 3/3 Running 6 118d kube-dns-84467597f5-sttgx 3/3 Running 9 118d kube-proxy-node1 1/1 Running 3 118d kube-proxy-node2 1/1 Running 2 118d kube-proxy-node3 1/1 Running 2 118d kube-scheduler-node1 1/1 Running 6 118d kubernetes-dashboard-5db4d9f45f-gkl6w 1/1 Running 3 118d nginx-proxy-node2 1/1 Running 2 118d nginx-proxy-node3 1/1 Running 2 118d tiller-deploy-6f6fd74b68-27fqc 1/1 Running 0 16d

user@master:~$ kubectl get componentstatus NAME STATUS MESSAGE scheduler Healthy ok controller-manager Healthy ok etcd-2 Healthy {"health": "true"} etcd-1 Healthy {"health": "true"} etcd-0 Healthy {"health": "true"}

【问题讨论】:

  • 看起来像duplicated question。也许您的问题是缺少获取 deployment api-resource 的 RBAC 权限。你能从 kube-system 命名空间检查 pod 吗? (kubectl get po --namespace=kube-system)。崩溃的 etcd pod 可能会导致一些 api-resources 丢失...另外,请检查 kube-apiserver pod 的日志。
  • 你能分享输出吗:kubectl get deployments -v10

标签: kubernetes kubernetes-deployment


【解决方案1】:

第一步是增加详细程度以帮助找出根本原因:

Kubectl 获取部署 --v=99

总的来说,可能导致它的原因很少:

  1. 您可能以 root 用户身份运行了以下命令,而不是普通用户。所以以普通用户身份运行

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

这里建议https://github.com/kubernetes/kubernetes/issues/52636

  1. kubectl 配置文件中的证书已过期,或者如果集群位于“AWS EKS”中,则 IAM 访问密钥可能处于非活动状态。

在我的例子中,当运行“kubectl get deployments --v=99”时,除了“服务器没有资源类型部署”之外,它还显示:

Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401

如果是这种情况,请检查您的证书 kubectl 配置文件(它们可能不存在、已过期、必须创建新的等),或者如果在 EKS 上,则 IAM 密钥已发布/激活。

  1. 缺少 RBAC 权限,因此不允许为其颁发/签署证书/密钥的用户/组查看特定资源。

【讨论】:

  • 使用详细选项有助于了解错误(--v=99)。
【解决方案2】:

请将用户更改为 root 并尝试相同的操作。它对我有用

【讨论】:

    【解决方案3】:

    在使用 Kubernetes 1.13.5(客户端和服务器)时,我遇到的行为与上面的“编辑 1”完全相同。删除客户端上的 ~/.kube/http-cache 目录对我有用。

    【讨论】:

    • 对我没有帮助
    【解决方案4】:

    @AliCan

    我怀疑这是因为 Kubectl 二进制版本。我注意到您的 kubectl 版本(1.13)高于 Kubernetes 版本(1.12)。

    您可以尝试将您的 kubectl 版本降级到 1.12 或更低版本吗?

    【讨论】:

      【解决方案5】:

      我删除 ~/.kube 目录,然后重新制作该目录并将 KUBECONFIG 文件移动到其中。这对我有用。

      【讨论】:

        猜你喜欢
        • 2021-06-28
        • 2021-01-01
        • 2019-08-22
        • 1970-01-01
        • 2020-12-07
        • 2020-07-16
        • 2020-10-12
        • 2019-01-23
        • 1970-01-01
        相关资源
        最近更新 更多