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

SoT*_*SoT 2 local minikube

不久,我使用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
Run Code Online (Sandbox Code Playgroud)

我得到:

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

hello-minikube1   LoadBalancer   10.110.130.109   10.110.130.109   8080:31993/TCP   9m22s
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么 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
Run Code Online (Sandbox Code Playgroud)

=>不工作

OhH*_*ark 5

默认情况下,minikube 期望在单独的虚拟机中运行。这可以通过显式指定驱动程序来更改。

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

因为 minikube 使用隧道创建一条通往使用 LoadBalancer 类型部署的服务的路由,并将其 Ingress 设置为其 ClusterIP。有关详细示例,请参阅此文档

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

我在这里看到两个选择:

  • 更多推荐:套装--driver=none

Minikube 还支持--driver=none在主机上而不是在虚拟机中运行 Kubernetes 组件的选项。使用此驱动程序需要 Docker 和 Linux 环境,但不需要虚拟机管理程序。

  • 可能不太理想:使用端口转发(使用 iptables 或代理)。这可能不太理想。

另请记住,minikube 是为了在 locahost 上进行测试而创建的。使用时请记住这一点。

编辑:

当你去的时候--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: {}
Run Code Online (Sandbox Code Playgroud)

以上经过测试,得出EXTERNAL IP = HOST IP。

请告诉我这是否有帮助。