如何使用NodePort
类型将LoadBalancer
类型的服务公开给互联网而没有?我发现的每个资源都是通过使用负载均衡器来完成的。但是我不希望负载平衡它的昂贵和不必要的用例,因为我正在运行一个postgres
图像实例,该实例正在安装到永久磁盘上,并且我希望能够使用pgAdmin从我的PC连接到我的数据库。如果可以的话,请提供更多详细的答案,因为我是Kubernetes,GCE和网络 Realm 的新手。
仅出于记录和更多上下文的考虑,我有一个部署运行我的API服务器的3个副本的部署,我通过设置了loadBalancerIP的负载均衡器将其连接到另一个副本,而另一个部署正在运行带有NodePort服务的postgres实例,我的API服务器通过该实例与API服务器进行通信我的数据库我的问题是,很难在没有公共(public)访问权限的情况下维护数据库。
最佳答案
使用NodePort
作为服务类型可以立即使用,例如像这样:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
name: http
- port: 443
nodePort: 30443
name: https
selector:
name: nginx
可以在documentation中找到更多详细信息。
使用
NodePort
的缺点是您必须自己与提供商防火墙集成。起始端口也可以在官方文档的Configuring Your Cloud Provider's Firewalls部分中找到。对于GCE,在所有节点上公开开放上述内容可能类似于:
gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443
一旦到位,您的服务应该可以通过节点的任何公共(public)IP进行访问。您会发现他们与:
gcloud compute instances list
关于kubernetes - 如何在GCE上将NodePort暴露给Internet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42040238/