通过kubernetes api使用minikube设置kubernetes集群的正确方法是什么?目前,我找不到可以访问kubernetes集群的端口。
7z5jn7bk1#
在运行minikube时,通过访问Kubernetes API的最简单方法是使用
kubectl proxy --port=8080
然后,您可以使用以下命令访问API
curl http://localhost:8080/api/
这也允许您在浏览器中浏览API。
minikube start --extra-config=apiserver.Features.EnableSwaggerUI=true
然后启动kubectl proxy,并在浏览器中导航到http://localhost:8080/swagger-ui/。您 * 可以 * 直接使用curl访问Kubernetes API
kubectl proxy
curl --cacert ~/.minikube/ca.crt --cert ~/.minikube/client.crt --key ~/.minikube/client.key https://`minikube ip`:8443/api/
但通常这样做没有什么好处。常见的浏览器对minikube生成的证书不满意,所以如果你想用你的浏览器访问API,你需要使用kubectl proxy。
sdnqo3pr2#
运行minikube start将自动配置kubectl。你可以运行minikube ip来获取minikube所在的IP地址,API服务器默认运行在8443上。
minikube start
kubectl
minikube ip
~/.minikube/apiserver.crt
~/.minikube/apiserver.key
如果您使用curl,请使用--cert和--key选项来使用证书和密钥文件。有关详细信息,请查看docs。
curl
--cert
--key
~/.minikube/profiles/minikube
--insecure
lhcgjxsq3#
我试过很多答案,但很多都是错的。在此之前,我们需要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"
dpiehjr44#
用户Sven Marnach让我在正确的方向,但得到正确的服务器ip,crt和关键位置,我运行kubectl config view。
kubectl config view
$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority: /Users/user/.minikube/ca.crt server: https://127.0.0.1:32792 name: minikube contexts: - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /Users/user/.minikube/profiles/minikube/client.crt client-key: /Users/user/.minikube/profiles/minikube/client.key $ curl --cacert ~/.minikube/ca.crt --cert ~/.minikube/profiles/minikube/client.crt --key ~/.minikube/profiles/minikube/client.key https://127.0.0.1:32792/api/ { "kind": "APIVersions", "versions": [ "v1" ], "serverAddressByClientCIDRs": [ { "clientCIDR": "0.0.0.0/0", "serverAddress": "172.17.0.2:8443" } ] } $ curl -s --cacert ~/.minikube/ca.crt --cert ~/.minikube/profiles/minikube/client.crt --key ~/.minikube/profiles/minikube/client.key https://127.0.0.1:32792/api/v1/pods | jq .items[].metadata | jq '"\(.name), \(.namespace), \(.selfLink)"' "shell-demo, default, /api/v1/namespaces/default/pods/shell-demo" "coredns-f9fd979d6-6b2nx, kube-system, /api/v1/namespaces/kube-system/pods/coredns-f9fd979d6-6b2nx" "etcd-minikube, kube-system, /api/v1/namespaces/kube-system/pods/etcd-minikube" "kube-apiserver-minikube, kube-system, /api/v1/namespaces/kube-system/pods/kube-apiserver-minikube" "kube-controller-manager-minikube, kube-system, /api/v1/namespaces/kube-system/pods/kube-controller-manager-minikube" "kube-proxy-bbck9, kube-system, /api/v1/namespaces/kube-system/pods/kube-proxy-bbck9" "kube-scheduler-minikube, kube-system, /api/v1/namespaces/kube-system/pods/kube-scheduler-minikube" "storage-provisioner, kube-system, /api/v1/namespaces/kube-system/pods/storage-provisioner"
读者也可能对link感兴趣。
rggaifut5#
对于windows用户,下面是一个更简单的kubectl proxy命令的替代方法:1.使用“minikube mount [path-to-folder]:/host挂载本地主机的.minikube文件夹。这样,您就可以从节点中访问证书。如果您不知道该文件夹的确切路径,可以通过查看kubectl config view响应来获取。1.在另一个命令提示符下,记下kube api服务器的IP地址。这可以从你的主机(windows)minikube ip上运行来完成。注意,这是minikube容器中的虚拟IP地址。1.在minikube容器中开始一个bash。docker exec -it {your-container-id} bash1.访问您在第1)点挂载的文件夹。现在,只需从第2点通过Kubectl api服务器的虚拟ip curl 到该服务器即可。):curl https://{your-ip-from-2}:8443/api --key ./ca.key --cert ./ca.crt这里我们传递要使用的证书。注意我没有使用代理-客户端证书。就这样,为了学习的目的,我认为这是一个比直接代理更有趣的方法。
minikube mount [path-to-folder]:/host
.minikube
docker exec -it {your-container-id} bash
curl https://{your-ip-from-2}:8443/api --key ./ca.key --cert ./ca.crt
nbysray56#
这些说明对我很有效https://github.com/jenkinsci/kubernetes-plugin#configuration-on-minikube需要生成和上传pfx文件,沿着其他步骤提到那里。
mhd8tkvw7#
以上答案,大部分在其本身的意义上是正确的。我将给出我的版本的答案:1)通过Kubernetes API使用minikube设置Kubernetes集群的正确方法是什么?答:我认为这是非常直接的。按照官方k8s文档中提到的minikube installation的安装步骤操作2)目前,我找不到可以访问kubernetes集群的端口。答:这也是一个直接的答案。你必须检查你的Kube配置文件。你可以在你的主目录~/.kube/config中找到它。查看这个文件,它会有详细信息。
~/.kube/config
apiVersion: v1 clusters: - cluster: certificate-authority: /Users/username/.minikube/ca.crt server: https://192.168.64.2:8443 name: minikube contexts: - context: cluster: minikube namespace: default user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /Users/username/.minikube/client.crt client-key: /Users/username/.minikube/client.key
这里提到的server细节是您要访问的api-server端点。您也可以使用kubectl命令查看此信息,如kubectl config view使用curl使用下面的curl击中api-server
server
api-server
curl https://192.168.64.2:8443/api/v1/pod --key /Users/sanjay/.minikube/client.key --cert /Users/sanjay/.minikube/client.crt --cacert /Users/sanjay/.minikube/ca.crt
注:replace the ip port and the path as per your config file in above command。
replace the ip port and the path as per your config file in above command
1zmg4dgp8#
根据上面xichen和Seba的回答,下面是从终端获取令牌的方法:
$ function get_token() { secret=$(kubectl get serviceaccount "$1" -o jsonpath='{.secrets[0].name}') && kubectl get secret "$secret" -o jsonpath='{.data.token}' | base64 --decode; } $ get_token target_account
我希望这将是有用的那些谁必须使用kubectl低于1.24,由于minikube的问题,使入口,如本question所述。
minikube
8条答案
按热度按时间7z5jn7bk1#
在运行minikube时,通过访问Kubernetes API的最简单方法是使用
然后,您可以使用以下命令访问API
这也允许您在浏览器中浏览API。
然后启动
kubectl proxy
,并在浏览器中导航到http://localhost:8080/swagger-ui/。您 * 可以 * 直接使用curl访问Kubernetes API
但通常这样做没有什么好处。常见的浏览器对minikube生成的证书不满意,所以如果你想用你的浏览器访问API,你需要使用
kubectl proxy
。sdnqo3pr2#
运行
minikube start
将自动配置kubectl
。你可以运行
minikube ip
来获取minikube所在的IP地址,API服务器默认运行在8443上。~/.minikube/apiserver.crt
和~/.minikube/apiserver.key
。当您发出请求时,必须将它们加载到HTTPS客户端。如果您使用
curl
,请使用--cert
和--key
选项来使用证书和密钥文件。有关详细信息,请查看docs。~/.minikube/profiles/minikube
目录中的--insecure
选项。由于自签名证书的原因,您可能需要将--insecure
选项设置为curl客户端。lhcgjxsq3#
我试过很多答案,但很多都是错的。
在此之前,我们需要IP和令牌。
注意:base64在mac上使用-D,但在Linux上使用-d。
那么,正确的命令是:
dpiehjr44#
用户Sven Marnach让我在正确的方向,但得到正确的服务器ip,crt和关键位置,我运行
kubectl config view
。读者也可能对link感兴趣。
rggaifut5#
对于windows用户,下面是一个更简单的
kubectl proxy
命令的替代方法:1.使用“
minikube mount [path-to-folder]:/host
挂载本地主机的.minikube
文件夹。这样,您就可以从节点中访问证书。如果您不知道该文件夹的确切路径,可以通过查看kubectl config view
响应来获取。1.在另一个命令提示符下,记下kube api服务器的IP地址。这可以从你的主机(windows)
minikube ip
上运行来完成。注意,这是minikube容器中的虚拟IP地址。1.在minikube容器中开始一个bash。
docker exec -it {your-container-id} bash
1.访问您在第1)点挂载的文件夹。现在,只需从第2点通过Kubectl api服务器的虚拟ip curl 到该服务器即可。):
curl https://{your-ip-from-2}:8443/api --key ./ca.key --cert ./ca.crt
这里我们传递要使用的证书。注意我没有使用代理-客户端证书。就这样,为了学习的目的,我认为这是一个比直接代理更有趣的方法。
nbysray56#
这些说明对我很有效https://github.com/jenkinsci/kubernetes-plugin#configuration-on-minikube
需要生成和上传pfx文件,沿着其他步骤提到那里。
mhd8tkvw7#
以上答案,大部分在其本身的意义上是正确的。
我将给出我的版本的答案:
1)通过Kubernetes API使用minikube设置Kubernetes集群的正确方法是什么?
答:我认为这是非常直接的。按照官方k8s文档中提到的minikube installation的安装步骤操作
2)目前,我找不到可以访问kubernetes集群的端口。
答:这也是一个直接的答案。你必须检查你的Kube配置文件。你可以在你的主目录
~/.kube/config
中找到它。查看这个文件,它会有详细信息。这里提到的
server
细节是您要访问的api-server
端点。您也可以使用
kubectl
命令查看此信息,如kubectl config view
使用
curl
使用下面的curl击中api-server
注:
replace the ip port and the path as per your config file in above command
。1zmg4dgp8#
根据上面xichen和Seba的回答,下面是从终端获取令牌的方法:
我希望这将是有用的那些谁必须使用
kubectl
低于1.24,由于minikube
的问题,使入口,如本question所述。