我可以在同一个外部IP上公开多个Kubernetes服务吗?

myzjeezk  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(1)|浏览(152)

我有几个图像做不同的事情。现在,我像这些命令一样暴露它们:

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:8000same_external-ip:9000,而不是上面的地址(159.65.210.104:8000159.65.129.201:9000)吗?

6qftjkof

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/

相关问题