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

问题描述 投票:0回答:1

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

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
)吗?

kubernetes google-kubernetes-engine kubectl azure-aks
1个回答
0
投票

您需要在集群中安装 Ingress 控制器来处理传入流量并将其路由到适当的服务。 Ingress 控制器的示例包括 Nginx Ingress、Traefik 和 Istio。

我们在 Azure 和谷歌云中使用的另一种方法是我们通过 Azure 和 HTTPS 全球 LB 中的 App Gateway 公开服务

在 GCP 情况下,服务暴露在 LB 单个 Anycast IP 上。

在 GCP Case 工作流程中: 创建 Kubernetes 服务 > 创建引用每个 Kubernetes 服务的后端服务 > 创建一个 URL 映射,根据请求的 URL 或主机名将传入请求映射到适当的后端服务 > 创建引用 URL 映射的目标 HTTP 代理 > 创建谷歌云 HTTPS 负载平衡器并将其配置为使用目标 HTTP 代理

每次前端将使用相同的 Anycast IP 和前端的不同端口...

在您的私有云案例中,我将推荐使用 Traefik,您可以按照他们的文档进行操作:https://doc.traefik.io/traefik/providers/kubernetes-ingress/

© www.soinside.com 2019 - 2024. All rights reserved.