我正在节点集群上运行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"}
答案 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
命令行