19

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

4

7 回答 7

33

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

kubectl proxy --port=8080

然后,您可以使用

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.

于 2017-09-13T09:57:29.887 回答
19

运行minikube start会自动配置kubectl

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


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

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

于 2016-11-21T14:13:34.820 回答
15

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

在此之前,我们需要 IP 和令牌。

如何获取 IP:minikube ip 如何生成 Token

$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"
于 2018-02-21T19:29:59.903 回答
1

对于Windowskubectl proxy用户,这里有一个更简单的命令的替代方法:

  1. 使用 "挂载本地主机的.minikube文件夹minikube mount [path-to-folder]:/host。这样,您将能够从节点内访问证书。如果您不知道此文件夹的确切路径,可以通过查看kubectl config view响应来获取它。

  2. 在不同的命令提示符下,记下 kube api 服务器的 IP。这可以在您的主机 (windows) 上运行minikube ip。请注意,这是您的 minikube 容器中的虚拟 IP。

  3. 在 minikube 容器中启动 bash。 docker exec -it {your-container-id} bash

  4. 访问您在第 1 点安装的文件夹)。现在,只需通过 2 中的虚拟 ip curl 到 Kubectl api 服务器。):

    curl https://{your-ip-from-2}:8443/api --key ./ca.key --cert ./ca.crt 在这里,我们正在传递要使用的证书。请注意我没有使用代理客户端。

而已。出于学习目的,我认为这是一种更有趣的方法,直接代理。

于 2021-11-25T21:14:35.737 回答
0

上述大多数答案在他们自己的意义上都是正确的。

我将给出我的答案版本:

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

答:我认为这很简单。按照官方 k8s 文档中提到的安装步骤进行minikube 安装

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

Ans: 这也有一个直截了当的答案。你必须检查你的 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

使用下面的 curl 来点击api-serverusingcurl

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

于 2020-06-14T08:14:48.743 回答
0

用户Sven Marnach让我找到了正确的方向,但获得了正确的服务器 ip、crt 和我运行的关键位置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"

读者也可能对链接感兴趣。

于 2020-10-08T20:21:21.153 回答
0

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

需要生成和上传 pfx 文件,以及那里提到的其他步骤。

于 2020-02-09T02:25:19.427 回答