当前位置: 首页 > 知识库问答 >
问题:

如何在GCE上向internet公开NodePort

昌博易
2023-03-14

如何在不使用负载平衡器的情况下向internet公开NodePort类型的服务?我找到的每个资源都是通过使用负载平衡器来实现的。但我不希望负载平衡对我的用例来说是昂贵且不必要的,因为我正在运行一个正在装载到永久磁盘的postgres映像实例,并且我希望能够使用pgAdmin从我的PC连接到我的数据库。如果可能的话,请您提供更详细的答案,因为我对Kubernetes、GCE和网络都是新手。

只是为了记录和更多的上下文,我有部署运行我的API服务器的3个副本,我通过负载均衡器与set loadBalancerIP连接,另一个部署运行一个带有NodePort服务的postgres实例,我的API服务器通过它与我的数据库通信。我的问题是在没有公共访问的情况下维护数据库很难。

共有2个答案

淳于开畅
2023-03-14

您可以在终端窗口(windows中的命令或power shell)中运行kubectl,将postgresql部署转发到本地主机。

kubectl port-forward deployment/my-pg-deployment 5432:5432

当这个命令运行时(它在前台运行),您可以使用pgAdmin指向localhost:5432访问gke上的pod。使用pgadmin完成后,只需关闭终端即可。

奚曦哲
2023-03-14

使用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

更多详细信息可在文档中找到。使用NodePort的缺点是,您必须自己负责与提供商防火墙集成。在官方文档的“配置云提供商的防火墙”一节中,也可以找到该功能的起始端口。

对于GCE,在所有节点上公开开放上述内容可能如下所示:

gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443

一旦这到位,您的服务应该可以通过节点的任何公共IP访问。您可以通过以下方式找到它们:

gcloud compute instances list
 类似资料:
  • 我正在尝试公开公共IPv6地址上的kubernetes TCP服务。应用程序在IPv4上运行良好,但我无法在IPv6上配置它。问题是这不是HTTP服务。当前服务按类型完成:非标准端口11042上的LoadBalancer。所以我认为它创建了网络负载均衡器。 支持IPv6的文档转发规则如下:目标HTTP代理目标HTTPS代理、目标SSL代理、目标TCP代理,但TCP代理已关闭可使用的端口列表。我也尝

  • 请考虑以下 我将端口连接到主机,以便管理我的服务,但这些服务只需使用默认的docker网络就可以相互访问。例如,运行在上的程序可以访问并且一些DNS魔术将使其工作。我想将我的主机添加到这个网络中,这样我就可以通过其主机名:port访问容器的端口。

  • 1. 总结问题 我正在按照开发人员RedHat的这个简单教程来使一个简单的节点/快速容器正常工作。 我无法让容器在 GCE 上的 CentOS 7 虚拟机下运行。 我有一台 CentOS 7 GCE 虚拟机,我安装了泊坞窗。 我能够成功构建和运行Docker容器,并将它们推送到Google的容器注册表,没有问题。 现在我正在尝试构建podman/buildah容器,并做同样的事情。我已经安装了bu

  • 用库伯涅茨-Kafka作为迷你库伯的起点。 这使用StatefulSet和headless服务在集群内进行服务发现。 我们的目标是对外展示各个Kafka经纪人,其内部地址为: 限制是这个外部服务能够专门针对经纪人。 做这件事的正确(或一种可能)方法是什么?是否可以通过< code > Kafka-x . broker . Kafka . SVC . cluster . local:9092 公开外

  • 问题内容: 我目前正在研究一个项目,因为我必须用Python包装C ++类才能编写程序脚本。因此,我的具体经验还涉及将Python解释器嵌入到我们的程序中。 我尝试的替代方法是: Boost.Python 我喜欢Boost.Python生成的更清洁的API,但事实是它需要用户安装其他依赖项,这一事实使我们切换到SWIG。 斯威格 SWIG对我们而言的主要优势在于,它不需要最终用户安装它即可使用最终