Minikube - 外部 IP 与主机的 public IP 不匹配

Minikube - External IP not match host's public IP

不久,我使用GOOGLE COMPUTE ENGINE(外网IP:34.73.89.55,所有端口和协议都打开),然后安装Docker,minikube,kubectl。那么:

minikube start --driver=docker

minikube tunnel

kubectl create deployment hello-minikube1 --image=k8s.gcr.io/echoserver:1.4

kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080

kubectl get svc

我得到:

NAME              TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE

hello-minikube1   LoadBalancer   10.110.130.109   10.110.130.109   8080:31993/TCP   9m22s

我的问题是,为什么EXTERNAL-IP与主机的外部IP:34.73.89.55不匹配?如何通过主机的外部 IP 远程访问此服务(例如:我在家并通过浏览器访问)?

Ps:我想使用 GOOGLE COMPUTE ENGINE。

编辑: 我也试试:

 sudo minikube start --driver=none

 sudo kubectl create deployment hello-minikube1 --image=k8s.gcr.io/echoserver:1.4

 sudo kubectl expose deployment hello-minikube1 --type=NodePort --port=8080

 wget 127.0.0.1:8080

=>无效

默认情况下,minikube 期望 运行 在单独的 VM 中。这可以通过明确指定驱动程序来更改。

  1. Why the EXTERNAL-IP did not match with the host's external IP?

因为 minikube 使用一个隧道,该隧道创建一个路由到以 LoadBalancer 类型部署的服务,并将它们的 Ingress 设置为它们的 ClusterIP。为一个 详细示例参见 this documentation

  1. How can I access this service remotely by the host's external IP?

我在这里看到两个选项:

  • 更推荐:设置--driver=none

Minikube also supports a --driver=none option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a Linux environment but not a hypervisor.

  • 可能不太理想:使用 port forwarding(使用 iptables 或代理)。这可能不太理想。

另请记住,创建 minikube 是为了在本地主机上进行测试。使用它时请记住这一点。

编辑:

--driver=none 时,您可以:

  • 使用 NodePort 类型而不是 LoadBalancer。

  • 通过添加:

  • 继续将负载均衡器与修改后的服务一起使用

spec: externalIPs: - <host_address>

例如:

apiVersion: v1
kind: Service
metadata:
 creationTimestamp: null
 labels:
   app: hello-minikube1
 name: hello-minikube1
spec:
 externalIPs:
 - <host_address>
 ports:
 - port: 8080
   protocol: TCP
   targetPort: 8080
 selector:
   app: hello-minikube1
 type: LoadBalancer
status:
 loadBalancer: {}

以上经过测试,结果为 EXTERNAL IP = HOST IP。

如果有帮助,请告诉我。