如何在不使用负载平衡器的情况下向internet公开NodePort类型的服务?我找到的每个资源都是通过使用负载平衡器来实现的。但我不希望负载平衡对我的用例来说是昂贵且不必要的,因为我正在运行一个正在装载到永久磁盘的postgres映像实例,并且我希望能够使用pgAdmin从我的PC连接到我的数据库。如果可能的话,请您提供更详细的答案,因为我对Kubernetes、GCE和网络都是新手。
只是为了记录和更多的上下文,我有部署运行我的API服务器的3个副本,我通过负载均衡器与set loadBalancerIP连接,另一个部署运行一个带有NodePort服务的postgres实例,我的API服务器通过它与我的数据库通信。我的问题是在没有公共访问的情况下维护数据库很难。
您可以在终端窗口(windows中的命令或power shell)中运行kubectl,将postgresql部署转发到本地主机。
kubectl port-forward deployment/my-pg-deployment 5432:5432
当这个命令运行时(它在前台运行),您可以使用pgAdmin指向localhost:5432访问gke上的pod。使用pgadmin完成后,只需关闭终端即可。
使用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对我们而言的主要优势在于,它不需要最终用户安装它即可使用最终