如何将minikube集群的API服务器暴露给公共网络(LAN)?

问题描述 投票:2回答:1

有没有办法在公共网络接口上公开使用minikube创建的Kubernetes集群的API服务器到LAN?

minikube start --help谈到这个选项(以及两个类似的选项):

  --apiserver-ips ipSlice \
    A set of apiserver IP Addresses which are used in the generated \
    certificate for localkube/kubernetes. This can be used if you \
    want to make the apiserver available from outside the machine (default [])

所以似乎有可能。但我无法弄清楚如何或找到任何进一步的信息。

我天真地尝试过:

minikube start --apiserver-ips <ip-address-of-my-lan-interface>

但这只会产生一个完全功能失调的迷你集群,我甚至无法从localhost访问。


按照下面一个答案中的建议,我将端口转发添加到Kubernetes,如下所示:

vboxmanage controlvm "minikube" natpf1 "minikube-api-service,tcp,,8443,,8443"

然后,我实际上可以从网络上的其他主机访问API服务器:

curl --insecure https://<ip-address-of-host-running-minikube>:8443

但回应是:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {

  },
  "code": 403
}

这有两个问题:

  1. 我必须使用--insecure进行curl调用,否则我会收到SSL验证错误。
  2. 我得到了回复,但回复只是告诉我,我不允许使用API​​ ...
kubernetes minikube
1个回答
2
投票

您需要将LAN接口上的某些端口转发到运行Kubernetes的VM。这适用于Minikube内部的任何服务,不仅适用于Kubernetes本身。

简而言之,如果您使用VirtualBox作为VM驱动程序,您应该:

  1. 找到服务绑定的VM上的端口。命令kubectl describe <servicename>minikube service <servicename> --url应该帮助你。
  2. 使用vboxmanage工具将端口转发到VM: vboxmanage controlvm "minikube" natpf1 "http,tcp,,12345,,80"

其中minikube - VM的名称,natfp1 - VM的虚拟接口,12345 - VM的端口,80 - 本地端口。

© www.soinside.com 2019 - 2024. All rights reserved.