我创建了一个NodePort来转发来自30101->80->8089
端口的请求
apiVersion: v1
kind: Service
metadata:
name: gorest-service
spec:
type: NodePort
selector:
app: gorest
ports:
- protocol: TCP
port: 80
targetPort: 8089
nodePort: 30101
当我尝试获取服务URL http://192.168.49.2:30101
时,我无法访问它,但是使用使用minikube service <service>
检索的url http://127.0.0.1:64741
,我可以访问它。
查询:无法理解http://192.168.49.2:30101
如何更改为由minikube service <service>
检索的http://127.0.0.1:64741
% minikube service gorest-service
|-----------|----------------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|---------------------------|
| default | gorest-service | 8089 | http://192.168.49.2:30101 |
|-----------|----------------|-------------|---------------------------|
Starting tunnel for service gorest-service.
|-----------|----------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|------------------------|
| default | gorest-service | | http://127.0.0.1:64741 |
|-----------|----------------|-------------|------------------------|
Opening service default/gorest-service in default browser...
❗ Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
发布于 2021-10-04 16:21:23
在您的清单文件中,您将容器内的服务端口从端口80重新映射到端口8089。
如果您想访问kubernetes内部的服务,您必须使用8089端口。
但是您不能从外部世界访问K8s内部的服务:您需要公开它们(您应该使用负载均衡器或出口服务)。
Minikube是用来发展的。您看到的64741端口是一个隧道服务,它启动minikube,允许您在不使用出口的情况下测试和调试k8s之外的服务(这可能不仅仅是将服务连接到外部世界,例如验证或授权请求)。
发布于 2021-10-05 07:38:23
您的理解是正确的,使用NodePort
公开的服务应该可以在minikube_IP:NodePort
上访问。首先,我在安装了minikube的Linux上检查了它,它成功了。
然后我注意到你在用MacOS
因为你用的是达尔文的码头司机
这就给我们带来了一些限制,在MacOS上,迷你库与码头司机一起运行。请看这个GitHub问题。
至少有两个选项(更多,但这些选项很简单):
minikube tunnel
你所做的,它对你有用。隧道用于从VM内部公开服务,其中minikube正在运行到主机的网络。请参考minikube的access应用程序。这就是minikube_IP:NodePort
如何转换为localhost:different_port
的方式。
NodePort
上访问您的服务),下面的命令是如何使用VirtualBox驱动程序启动它(这应该安装在您的计算机上):minikube start --driver=VirtualBox
https://stackoverflow.com/questions/69438912
复制相似问题