我正在rancher
服务器k3s
上工作,以提高我对这些解决方案的了解。
我想在局域网上公开容器服务,这就是我使用kubectl port-forward
的原因。
kubectl port-forward --namespace=ns-name --address LAN-IP service/hello 30104:8080
但我可以在一些网络资源中看到,这不是一个可靠的解决方案,只是用于本地测试目的。
我试图用ingress替换它们,但除了rancher
组件之外,我在ingress
、DNS
和nginx-ingress
之间有点迷失了方向。我知道load balancer
需要一个云提供商,例如拥有一个公共IP,并处理负载均衡器的<pending>
状态。
你能告诉我在没有云提供商的情况下如何在局域网中更换port-forward
吗?
[编辑@Rajesh Dutta]
我已经使用了NodePort
,但是,在没有端口转发的情况下,服务公开为NODE_IP:PORT
,而不是LAN_IP:PORT
。我需要从集群之外加入它。
这就是我所做的:
1-创建部署
kubectl create deployment hello --image=gcr.io/google-samples/node-hello:1.0 --port=8080 --replicas=2
2-公开部署(创建服务(
kubectl expose deployment hello --type=NodePort
3-正向服务
kubectl port-forward --namespace=ns-name --address local-ip service/hello 30104:8080
IP架构
现在,考虑到我将有几个服务,我会找到最好的方法来取代端口转发。
首先,我建议使用NodePort服务。这将向NodePort(30000-32767(公开您的应用程序。稍后,如果你愿意,你可以选择切换到入口。
假设您正在尝试使用部署类型的对象
命令:
kubectl expose deployment deployment-name --type=NodePort --port=8080 --target-port=<rancher server port>