我正在尝试在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设置更多的东西吗?
答案 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在您的普通研究中非常有用。