首页 > 解决方案 > 无法使用 kubeconfig 文件中的上下文

问题描述

我正在尝试使用用户名和密码在 kubeconfig 文件中添加一个新集群及其上下文,但它失败了。下面是我用来设置上下文的命令。

kubectl config  set-cluster lab101 --server=https://api-kube.example.com:8443 --insecure-skip-tls-verify --context=lab101
kubectl config set-credentials kubeadmin --username=kubeadmin --password=xxxxxxx --cluster=lab101
kubectl config  set-context lab101 --cluster=lab101 --namespace=default --user=kubeadmin
kubectl config use-context lab101

日志:

GET https://api-kube.example.com:8443/api?timeout=32s 403 Forbidden in 19 milliseconds
I0422 11:37:31.741005   18972 round_trippers.go:411] Response Headers:
I0422 11:37:31.741005   18972 round_trippers.go:414]     Cache-Control: no-cache, private
I0422 11:37:31.741005   18972 round_trippers.go:414]     Content-Type: application/json
I0422 11:37:31.741005   18972 round_trippers.go:414]     X-Content-Type-Options: nosniff
I0422 11:37:31.741005   18972 round_trippers.go:414]     Content-Length: 188
I0422 11:37:31.741005   18972 round_trippers.go:414]     Date: Wed, 22 Apr 2020 15:37:31 GMT
I0422 11:37:31.762977   18972 request.go:897] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"forbidden: User \"system:anonymous\" cannot get path \"/api\"","reason":"Forbidden","details":{},"code":403}

注意:如果我使用相同的用户,oc login他们的密码可以正常工作。不明白为什么如果我手动设置 kubeconfig 它将不起作用。

标签: kuberneteskubeconfig

解决方案


OpenShift Kubernetes 不太可能允许使用username 和 password进行身份验证。该oc login命令使用用户名和密码对oAuth 服务器进行内部身份验证,以获取不记名令牌,该不记名令牌自动存储在 kubectl 使用的 kubeconfig 文件中。当您执行任何 kubectl 命令时,该令牌用于向 Kubernetes 集群进行身份验证。

您可以通过检查令牌 oc config view。您可以获得令牌并使用它进行设置kubectl config set-credentials kubeadmin --token=bearertoken,它应该可以工作。

请参阅此处的文档。

或者,您可以在此处关注此文档以获取不记名令牌。


推荐阅读