如何在使用minkube时访问Kubernetes API?

Kar*_*Kid 13 kubernetes minikube

使用minikube通过kubernetes api进行kubernetes集群设置的正确方法是什么?目前,我找不到可以访问kubernetes集群的端口.

Sve*_*ach 17

使用minikube时访问Kubernetes API的最简单方法是使用

kubectl proxy --port=8080
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用访问API

curl http://localhost:8080/api/
Run Code Online (Sandbox Code Playgroud)

这也允许您在浏览器中浏览API.使用启动minikube

minikube start --extra-config=apiserver.Features.EnableSwaggerUI=true
Run Code Online (Sandbox Code Playgroud)

然后启动kubectl proxy,并在浏览器中导航到http:// localhost:8080/swagger-ui /.

可以直接使用curl访问Kubernetes API

curl --cacert ~/.minikube/ca.crt --cert ~/.minikube/client.crt --key ~/.minikube/client.key https://`minikube ip`:8443/api/
Run Code Online (Sandbox Code Playgroud)

但通常这样做没有任何好处.常见的浏览器对minikube生成的证书不满意,因此如果您想使用浏览器访问API,则需要使用kubectl proxy.

  • 对于minikube v0.28.0与k8s v1.10.0,以下工作启用了swagger ui:`minikube start --extra-config = apiserver.enable-swagger-ui = true` (4认同)

iam*_*nat 13

运行minikube start会自动配置kubectl.

您可以运行minikube ip以获取您的minikube所在的IP.默认情况下,API服务器在8443上运行.


更新:要直接访问API服务器,您需要使用已生成的自定义SSL证书.通过minikube.客户端证书和密钥通常存储在:~/.minikube/apiserver.crt~/.minikube/apiserver.key.在发出请求时,您必须将它们加载到HTTPS客户端中.

如果您正在使用curl使用--cert--key选项来使用证书和密钥文件.查看文档以获取更多详细信息.

  • 是的,但如果您查询api-server,那么它将通过"未经授权的请求"错误!那么如何克服这个错误呢? (2认同)

小智 10

我经历了很多答案,但很多都是错的.

在我们开始之前,我们需要IP和令牌.

如何获取IP:minikube ip 如何生成令牌:

$export secret=kubectl get serviceaccount default -o json | jq -r '.secrets[].name'

$kubectl get secret $secret -o yaml | grep "token:" | awk {'print $2'} |  base64 -D > token
Run Code Online (Sandbox Code Playgroud)

注意:base64对mac使用-D,对Linux使用-d.

然后,正确的命令是:

#curl -v -k -H --cacert ~/.minikube/ca.crt -H "Authorization: Bearer $(cat ~/YOUR_TOKEN)"  "https://{YOUR_IP}:8443/api/v1/pods"
Run Code Online (Sandbox Code Playgroud)

  • 为了避免在获取秘密名称时依赖于“jq”,您可以运行“$export Secret=$(kubectl get serviceaccount default -o jsonpath='{.secrets[0].name}')”。另外,也不需要 `grep` 或 `awk`,只需运行 `kubectl get Secret $secret -o jsonpath='{.data.token}' | base64 --解码` (4认同)