如何使用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/

10-13 06:17