首页 > 解决方案 > 使用负载均衡器在 GCP 上进行袜子商店

问题描述

我正在尝试在 Google Cloud Platform 上部署和访问 Sock-shop。 https://github.com/microservices-demo/microservices-demo

我能够使用部署脚本 https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml部署它

根据这里的教程 https://www.weave.works/docs/cloud/latest/tasks/deploy/sockshop-deploy/ 它说在浏览器中显示袜子店使用:

<master-node-IP>:<NodePort>

但是在 GCP 上,主节点对用户是隐藏的。

所以我将类型从 NodePort 更改为 LoadBalancer。

而且我能够获得外部IP。

但它说找不到该页面。enter code here

我需要为 LoadBalancer 设置更多东西吗?

标签: kubernetesgoogle-cloud-platformload-balancing

解决方案


我不知道你是否解决了这个问题,但我做到了,所以我想与你分享我的解决方案,它对我有用。你可以通过两种方式来做到这一点:

1st)通过创建一个负载均衡器,您可以在其中公开前端服务。我假设您已经创建了一个名为 sock-shop 的命名空间,因此任何进一步的命令都应指定并引用该命名空间。如果您键入并执行命令: kubectl get services --namespace=sock-shop 您应该能够看到一个包含所有服务的列表,其中包括一个名为“前端”的服务。因此,现在您不想将该服务公开为 NodePort,而是公开为 LoadBalancer。因此,执行命令: kubectl expose service front-end --name=front-end-lb --port=80 --target-port=8079 --type=LoadBalancer --namespace=sock-shop 在此之后给一些时间,您将能够通过公共 IP 地址(临时)访问 Sock Shop 的前端

2nd) 更高级的方法是配置 Ingress 负载均衡器。您需要配置另一个 yaml 文件并将此代码放入其中并像使用之前的 .yaml 文件一样运行它。

nano basic-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace : sock-shop
  name: basic-ingress
spec:
  backend:
    serviceName: front-end
    servicePort: 80

kubectl apply -f basic-ingress.yaml --namespace=sock-shop

通过此命令找到公共 IP 地址,最多 15 分钟后,您应该能够访问 Sock Shop。

kubectl get ingress --namespace=sock-shop

推荐阅读