有没有办法在公共网络接口上公开使用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
}
这有两个问题:
--insecure
进行curl
调用,否则我会收到SSL验证错误。您需要将LAN接口上的某些端口转发到运行Kubernetes的VM。这适用于Minikube内部的任何服务,不仅适用于Kubernetes本身。
简而言之,如果您使用VirtualBox作为VM驱动程序,您应该:
kubectl describe <servicename>
和minikube service <servicename> --url
应该帮助你。vboxmanage
工具将端口转发到VM:
vboxmanage controlvm "minikube" natpf1 "http,tcp,,12345,,80"
其中minikube
- VM的名称,natfp1
- VM的虚拟接口,12345
- VM的端口,80
- 本地端口。