使用minikube,运行以下命令时:
kubectl -v=11 --kubeconfig /dev/null --insecure-skip-tls-verify -s http://localhost:8001 --token "invalid" -n namespace get pods
当我不想要答案的时候,我有一个答案。我不知道它是如何被授权的。此外,如果我使用具有特定权限的有效令牌,则不会使用这些权限。
kubectl--token=$token不';t使用令牌的权限运行并不能回答我的问题,因为我指定使用/dev/null作为配置文件。
知道吗?
我将尝试总结我在评论中提供的答案。
问题是:为什么运行kubectl -s http://localhost:8001 --kubeconfig /dev/null --token <invalid_token>
(其中:8001是kubectl代理打开的端口(会像我被授权一样返回,而不应该是因为我将所有可能的授权选项设置为null或不正确的值
答案是kubectl proxy
打开一个端口并为您处理所有授权,所以您不必这样做。现在要访问kubernetes的RESTapi,您只需要使用curl localhost:8001/...
。没有令牌和证书。
因为您已经获得了kubectl proxy
的授权,所以使用kubectl并将其指向localhost:8001会导致它不需要授权,也不需要任何令牌来访问k8s。
作为一种替代方案,您可以检查当您运行相同的程序时会发生什么,但不是通过kubectl proxy
连接,而是直接使用kubernetes端口。
你提到你使用的是minikube,所以默认情况下是8443 端口
$ kubectl --kubeconfig /dev/null -s https://$(minikube ip):8443 --token "invalid" --insecure-skip-tls-verify get pods
error: You must be logged in to the server (Unauthorized)
正如你现在看到的,它如预期的那样工作。