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

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

[简短地,我使用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

=>无效

local minikube
1个回答
0
投票

默认情况下,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还支持运行--driver=noneKubernetes组件位于主机而不是VM中。使用此驱动程序需要Docker和Linux环境,但不需要管理程序。

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

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

编辑:

[申请--driver=none时,您可以:

  • 使用NodePort类型代替LoadBalancer。

  • 通过添加以下内容,在修改后的服务中继续使用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: {}

以上经过测试,得出外部IP =主机IP。

请让我知道是否有帮助。

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