local - Minikube - 外部 IP 与主机的公共 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 中运行。这可以通过显式指定驱动程序来更改。
Why the EXTERNAL-IP did not match with the host's external IP?
因为 minikube 使用隧道创建到使用 LoadBalancer 类型部署的服务的路由,并将它们的 Ingress 设置为它们的 ClusterIP。有关详细示例,请参阅此文档。
How can I access this service remotely by the host's external IP?
我在这里看到两个选项:
- 更推荐:套装
--driver=none
Minikube 还支持
--driver=none
在主机上而不是在 VM 中运行 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: {}
以上经过测试,导致外部 IP = 主机 IP。
请让我知道这是否有帮助。
推荐阅读
- java - 从包含 java 源文件的 jar 创建包含 .class 文件的 jar 文件的最快方法?
- mysql - 当我使用子字符串时,起点是 1,而不是零 (0)
- javascript - 想要使用 getCurrentPosition() 或类似方法获取设备 GPS 位置并将结果返回到 PHP
- reactjs - RxJS - 从组件构造函数调度一个动作
- cors - 请求的默认请求模式实际上是“no-cors”,还是“cors”?
- tensorflow - 如何将 Tensorflow Keras 检查点保存到 pb 文件
- python - 如何从 python 中的 JSON 中获取一个键和值?
- git - 拉取请求数量高于我的回购预期?
- python - 使用 Pandas 沿文本文件行的描述性统计
- android-sensors - 使用 cooja 模拟器模拟传感器