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

在Google云上使用HTTP负载平衡器和容器集群

柴瀚
2023-03-14

我想在Google容器引擎上运行docker映像的集群前面放置一个HTTP负载平衡器,这样我就可以使用HTTPS,而无需应用程序支持它。

我使用以下命令创建了一个容器集群:

gcloud container clusters create test --zone europe-west1-b --machine-type f1-micro --num-nodes 3

然后,我创建了一个复制控制器,在集群上运行一个映像,该映像基本上是nginx,其中复制了静态文件。

如果我为此创建一个网络负载平衡器,一切都会正常工作。我可以转到我的负载平衡器IP地址并查看网站。但是,如果创建HTTP负载平衡器以使用创建集群时创建的实例组,则会得到HTTP 502。我还注意到,如果我尝试浏览集群中任何单个实例的外部IP地址,它会拒绝连接。

对于集群实例使用的标记,tcp:80上已经有一个防火墙规则,如果我没有弄错的话,应该允许任何地方连接到这些实例上的端口80。但它似乎不起作用。

共有1个答案

沈博涉
2023-03-14

要在各个实例的公共IP上公开您的服务,需要将它们指定为NodePort服务。否则,服务IP只能从集群内访问,这可能解释了您的502。您的HTTP负载均衡器需要在实例的公共IP上可访问才能工作。

有一个关于在GKE上使用Ingress对象进行HTTP负载平衡的演练,可能会很有用。

 类似资料:
  • 我遵循了GKE教程,使用beta Inrit类型创建HTTP负载均衡器,并且在使用nginx映像时工作正常。我的问题是为什么Inrit是必要的。 我可以创建一个容器引擎集群,然后创建一个使用库伯内特斯创建的实例组作为服务后端的HTTP负载均衡器,并且一切似乎都运行良好。当仅在部分流程中使用库伯内特斯似乎运行良好时,为什么我要经历使用Inete的所有麻烦?

  • 我正在尝试部署一个Docker容器,它公开了一个简单的Docker服务器,它是Google容器引擎(库伯内特斯)中httpbin.org服务的克隆。 这是我正在使用的服务定义: 入口定义为: 在服务/入口仪表板中,我可以看到两个IP,一个直接绑定到服务(临时),另一个静态IP绑定到入口。直接在80号端口给他们两个打电话很有魅力。 完成后,我为静态IP创建了一个A记录,并确保GKE仪表板中的负载平衡

  • 在花了几个小时阅读Http客户机文档和源代码后,我决定在这里寻求帮助。 我有一个使用循环算法的负载均衡服务器

  • 有人知道谷歌的HTTPS负载平衡器是否正常工作吗?我当时正在建立一个NGINX入口服务,但我注意到谷歌负载平衡器是由Kubernetes自动设置的。我得到了两个外部IP,而不是一个。因此,我决定使用谷歌服务,而不是设置NGINX负载平衡器。我删除了我的容器集群,创建了一个全新的集群。我在端口80上启动了HTTP pod和HTTP服务。然后,我创建了入口服务和L7控制器吊舱。现在,我在查看负载平衡器

  • 我们在AWS EKS kubernetes集群中运行了一个Hazelcast 3.12集群。 您知道如何将运行在AWS EKS kubernetes群集内部的具有多个pod的Hazelcast群集暴露到kubernetes群集外部吗? Hazelcast集群有6个吊舱,暴露在kubernetes集群之外,具有LoadBalancer(AWS经典负载平衡器)类型的kubernetes“服务”。 当我

  • 我必须手动在MS Azure中创建Kubernetes群集,而不是使用AKS。因此: > 我在一个可用性集中创建了2个VM:一个用于k8s master,第二个用于k8s节点。 我创建了外部负载均衡器并将2个VM添加到后端池。 我使用kubes祈祷创建了k8s集群。 我创建了部署和负载均衡器服务: 但LoadBalancer服务外部IP始终处于挂起状态: 此外,telnet azure\u loa