使用 Kubernetes Gateway API 的多集群网关
在本文中,了解如何使用网关 API 规范来配置多集群设置的网关。
Kubernetes Gateway API 是 CNCF 发布的一项新规范,旨在标准化 Kubernetes Ingress 流量。现在,如果将服务配置为高可用性 (HA),该怎么办?(假设它位于不同的云环境中,您必须从网关访问它;即多集群、多云场景。)在本文中,我们将展示如何使用 Gateway API 规范为多集群设置配置网关。
多集群 Kubernetes 网关演示概述
我们有两个集群:一个在 EKS 中(主集群),另一个在 GKE 中(远程集群)。我在两个集群中都部署了 Istio,设置是主-远程 Istio 安装。Istio 用作控制器来实现网关 API 资源。
以下是我要做的事情:
- 在主集群/EKS中,部署helloworld-v1部署、helloworld服务和echoserver服务。
- 在远程集群/GKE 中,部署helloworld-v2部署、helloworld服务、echoserver部署和echoserver服务。
- 在主集群中部署 Kubernetes Gateway API 资源 —Gateway和HTTPRoutes— 。
- 部署完成后,我们将验证主集群/EKS 中的网关是否可以访问远程集群/GKE 中的服务,如下图所示:

带有 K8s Gateway API 演示设置的多集群、多云网关
在集群中部署应用程序和服务
在主集群和远程集群上部署helloworld-service :
kubectl -f 应用 helloworld-service.yaml --context=eks-cluster
kubectl -f 应用 helloworld-service.yaml --context=gke-cluster1
将helloworld-deployment-v1 部署到主集群/EKS,将helloworld-deployment-v2 部署到远程集群/GKE:
kubectl -f 应用 helloworld-deployment-v1.yaml --context=eks-cluster
kubectl -f 应用 helloworld-deployment-v2.yaml --context=gke-cluster在两个集群中 部署echoserver-service ,并仅在远程集群中 部署 echoserver-deployment :
kubectl -f 应用 echoserver-service.yaml --context=eks-cluster
kubectl -f 应用 echoserver-service.yaml --context=gke-cluster
kubectl -f 应用 echoserver-deployment.yaml --context=gke-cluster请注意,要实现此功能,需要在两个集群中部署服务资源。这就是为什么我将其部署echoserver-service在主集群/EKS 中,尽管部署仅在远程集群/GKE 中。
现在,让我们验证主集群和辅助集群中的部署:
kubectl 获取 svc -n demo --context=eks-cluster
kubectl 获取 pods -n demo --context=eks-cluster
kubectl 获取 svc -n demo --context=gke-cluster
kubectl 获取 pods -n demo --context=gke-cluster
主集群中有helloworld-v1pod 正在运行,而远程集群中有helloworld-v2和echoserverpod 均成功运行:

部署 K8s Gateway API 资源并验证多集群通信
在主/EKS集群中应用网关资源:
kubectl apply -f gateway-api-gateway.yaml --context=eks-clusterGateway使用Istio作为控制器,部署在istio-ingress命名空间中。
在应用程序的主集群中部署HTTPRoutehelloworld,监听路径/hello:
kubectl apply -f helloworld-httproute.yaml --context=eks-cluster现在,让我们通过 curlhelloworld应用程序来验证多集群通信;但首先,我们需要获取网关 IP:
kubectl 获取 svc -n istio-ingress --context=eks-cluster验证多集群通信:
curl yours ip/hello
您可以看到该请求分别由部署在主集群和辅集群中的helloworld-v1和提供服务。helloworld-v2
现在,让我们在主集群中部署echoserver 的 HTTPRoute,它监听/ :
kubectl apply -f echoserver-httproute.yaml --context=eks-cluster
验证网关是否能够访问echoserver部署在远程集群:

网关能够echoserver成功从部署在远程集群的服务器收到响应。演示到此结束。
原文链接:https://dzone.com/articles/multicluster-gateways-with-kubernetes-gateway-api
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 9个最佳Text2Sql开源项目:自然语言到SQL的高效转换工具
- 深入解析API网关策略:认证、授权、安全、流量处理与可观测性
- GraphQL API手册:如何构建、测试、使用和记录
- 自助式入职培训服务API:如何让企业管理更上一层楼?
- Python如何调用Jenkins API自动化发布
- 模型压缩四剑客:量化、剪枝、蒸馏、二值化
- 火山引擎如何接入API:从入门到实践的技术指南
- 为什么每个使用 API 的大型企业都需要一个 API 市场来增强其合作伙伴生态系统
- 构建更优质的API:2025年顶级API开发工具推荐 – Strapi
- 外部函数与内存API – Java 22 – 未记录
- FAPI 2.0 深度解析:下一代金融级 API 安全标准与实践指南
- .NET Core 下的 API 网关