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

时间:2016-11-21 13:08:07

标签: kubernetes minikube

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

6 个答案:

答案 0 :(得分:15)

运行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

答案 1 :(得分:12)

正在运行minikube start会自动配置kubectl

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

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

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

答案 2 :(得分: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使用-D表示mac,但是-d表示Linux。

然后,正确的命令是:

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

答案 3 :(得分:0)

这些说明对我有用https://github.com/jenkinsci/kubernetes-plugin#configuration-on-minikube

需要生成并上传pfx文件,以及此处提到的其他步骤。

答案 4 :(得分:0)

以上答案中的大多数都是正确的。

我将给出答案的版本:

1)使用minikube通过Kubernetes API进行Kubernetes集群设置的正确方法是什么?

回答:我认为这很简单。请遵循minikube installation

的官方k8s文档中提到的安装步骤

2)目前,我找不到可以访问kubernetes集群的端口。

回答:这也是一个简单的答案。您必须检查您的Kube配置文件。您可以在主目录~/.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来查看此信息

使用下面的卷发,以api-server击中curl

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

答案 5 :(得分:0)

用户Sven Marnach使我朝着正确的方向前进,但是要获得我运行的kubectl config view的正确服务器ip,crt和密钥位置。

$ 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感兴趣。