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

问题描述 投票:10回答:3

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

kubernetes minikube
3个回答
11
投票

运行minikube start将自动配置kubectl

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


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

如果您正在使用curl,请使用--cert--key选项来使用证书和密钥文件。查看docs了解更多详情。


12
投票

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

kubectl proxy --port=8080

然后,您可以访问API

curl http://localhost:8080/api/

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

minikube start --extra-config=apiserver.Features.EnableSwaggerUI=true

然后启动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/

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


8
投票

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

在我们开始之前,我们需要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

注意: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"
© www.soinside.com 2019 - 2024. All rights reserved.