Kubeconfig上下文返回“您必须登录到服务器(未经授权)错误

时间:2019-06-07 02:52:38

标签: kubernetes

我正在节点集群上运行kube。当我在集群上设置上下文时,当我尝试运行kubectl get pods

时,出现一条错误消息:“错误:您必须登录到服务器(未经授权)”

如果我取消设置当前上下文,则错误消失,并且可以查看我的Pod和节点。所以我猜想这与我的kubeconfig有关,但我不确定我在哪里弄错了。

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/user/ssl/ca.pem
    server: https://<ip for my master node>
  name: default-cluster
contexts:
- context:
    cluster: default-cluster
    user: user
  name: kubeflow
current-context: kubeflow
kind: Config
preferences: {}
users:
- name: user
  user:
    client-certificate: /home/user/ssl/client-ca.pem
    client-key: /home/user/ssl/client-ca-key.pem

编辑:

Kube版本1.14

user@kube01:~$ kubectl  version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02:58Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
  • 在具有3个主节点和4个工作程序的集群上运行。 不在GCP或任何云平台上

1 个答案:

答案 0 :(得分:2)

  

如果我取消设置当前上下文,则错误消失,并且可以查看我的Pod和节点。所以我猜想这与我的kubeconfig有关,但我不确定我在哪里弄错了。

这很可能意味着您正在主节点本身上运行kubectl,并且主节点正在使用未经身份验证的端口在:8080上侦听(因为kubectl使用http://127.0.0.1:8080默认情况下,如果没有kubeconfig)

所以是的,很可能是因为您的证书是由apiserver不信任的CA签署的。

您可以通过以下方式进行检查:

openssl x509 -in /home/user/ssl/client-ca.pem -noout -text

然后查看CA,并将issuer中的client-ca与CA中的subject进行比较:

openssl x509 -in /home/user/ssl/ca.pem -noout -text

我确定有一些指纹和序列号以及需要匹配的东西,但是我没有方便的openssl命令行