kubernetes - 使用负载均衡器在 GCP 上进行袜子商店
问题描述
我正在尝试在 Google Cloud Platform 上部署和访问 Sock-shop。 https://github.com/microservices-demo/microservices-demo
根据这里的教程 https://www.weave.works/docs/cloud/latest/tasks/deploy/sockshop-deploy/ 它说在浏览器中显示袜子店使用:
<master-node-IP>:<NodePort>
但是在 GCP 上,主节点对用户是隐藏的。
所以我将类型从 NodePort 更改为 LoadBalancer。
而且我能够获得外部IP。
但它说找不到该页面。enter code here
我需要为 LoadBalancer 设置更多东西吗?
解决方案
我不知道你是否解决了这个问题,但我做到了,所以我想与你分享我的解决方案,它对我有用。你可以通过两种方式来做到这一点:
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
推荐阅读
- python - 将返回的元素连接到递归函数中的列表
- python - 如何在python中找到最大值和重合日
- elasticsearch - ElasticSearch:结果窗口太大
- html - 使用 SVG 作为具有 position: absolute 的灵活背景;
- node.js - 使用带有 findOne() 方法的 NodeJS 从 MongoDB 数据库获取服务器端变量信息的问题
- c - 如何根据桶大小更改除法哈希函数
- javascript - 如何等待数组完成,然后执行函数?
- java - 如何使用 SpringBoot 2 运行单元测试
- c# - 为什么我不能在 Session 中保存对象
- python - 在 Flask 中使用 WTForms 验证 GET 参数