我有几个图像做不同的事情。现在,我像这些命令一样暴露它们:
kubectl create deployment work_deployment_1 --image=username/work_image_1:0.0.1-SNAPSHOT
kubectl expose deployment work_deployment_1 --type=LoadBalancer --port=8000
然后
kubectl create deployment work_deployment_2 --image=username/work_image_2:0.0.1-SNAPSHOT
kubectl expose deployment work_deployment_2 --type=LoadBalancer --port=9000
在部署创建和公开之后,我通过kubectl get service
检查它们,结果如下:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
work_deployment_1 LoadBalancer 10.245.197.226 159.65.210.104 8000:30798/TCP 30m
work_deployment_2 LoadBalancer 10.245.168.156 159.65.129.201 9000:32105/TCP 51s
我可以进行部署(或多个部署),暴露same_external-ip:8000
和same_external-ip:9000
,而不是上面的地址(159.65.210.104:8000
和159.65.129.201:9000
)吗?
1条答案
按热度按时间6qftjkof1#
您需要在集群中安装Ingress控制器来处理传入的流量并将其路由到相应的服务。Ingress控制器的示例包括Nginx Ingress,Traefik和Istio。
我们在Azure和Google Cloud中使用的另一种方法是通过Azure中的App Gateway和HTTPS Global LB公开服务
在GCP情况下,服务暴露在LB单个任播IP上。
在GCP案例中,工作流程为:* 创建Kubernetes服务〉创建引用每个Kubernetes服务的后端服务〉创建URLMap,根据请求的URL或主机名将传入请求Map到相应的后端服务〉创建引用URLMap的目标HTTP代理〉创建Google Cloud HTTPS负载均衡器并将其配置为使用目标HTTP代理 *
每次前端将使用相同的任播IP和前端的不同端口...
在您的私有云案例中,我将参考使用Traefik,您可以遵循他们的文档:https://doc.traefik.io/traefik/providers/kubernetes-ingress/