带有Loadbalancer的GCP袜子店

时间:2018-11-19 05:01:00

标签: kubernetes google-cloud-platform load-balancing

我正在尝试在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设置更多的东西吗?

2 个答案:

答案 0 :(得分:1)

我不知道如果您解决了问题,但我做到了,因此我想与您分享适用于我的解决方案。 您可以通过两种方式做到这一点:

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地址(临时)访问袜子店的前端

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分钟后,您应该可以访问袜子店。

kubectl get ingress --namespace=sock-shop

答案 1 :(得分:0)

我建议返回对应服务中的NodePort,并在您的GCP群集中创建Ingress资源。

如果您希望从集群外部访问相关应用程序,Kubernetes提供了Ingress机制来向内部服务公开HTTP和HTTPS路由。

基本上,Ingress资源已成功实现后,默认情况下将在GKE中默认创建HTTP(S) Load Balancer,因此它将注意将所有外部HTTP / S通信路由到嵌套的Kubernetes服务。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
spec:
  backend:
    serviceName: web
    servicePort: 8080

您可以通过以下命令检查负载均衡器的外部IP地址:

kubectl get ingress basic-ingress

我发现这个Article在您的普通研究中非常有用。