操作场景
在生产系统中,为了保证服务的高可用,容器集群通常使用对等部署的方式,两个容器集群部署相同的服务,当一个容器集群出现故障时,请求能访问对等的容器集群上的服务,从而保证服务的高可用。云原生 API 网关提供针对该场景的解决方案,支持在开启 Kong Ingress Controller 时关联多个容器集群,网关将同步容器集群 Ingress 上的信息以生成网关资源。当任意容器集群修改资源定义(Service,Ingress,Plugin)时,实时同步更新所有其他容器集群。
如图所示,云原生 API 网关关联了容器集群 A 和 B,Ingress Controller 将自动同步集群 A 和 B 上的资源:
1. Kubernetes Service:不同名服务将分别生成 Kong Service 和 Upstream,同名服务将进行 Pod IP 合并,展示在服务的节点信息中。
2. Kong Plugin:生成对应的插件。
3. Ingress:生成对应的路由。
集群故障处理
1. 当集群 A 的 Pod 发生故障时,K8S 机制将自动剔除该节点,网关节点也将自动删除该节点。
2. 当集群 A 的 Api Server 无法连接时,网关将根据健康检查机制自动转发到健康的节点,网关将根据健康检查机制自动转发到健康的节点,以保证服务的连续性。开启健康检查请参考 配置健康检查。
前提条件
已购买腾讯云容器服务,包括 TKE 标准集群 或 TKE Serverless 集群。
操作步骤
步骤1:创建容器资源
1. 登录 容器服务控制台。
2. 创建并部署容器服务,创建方法可参见 创建集群。
注意:
相同命名空间、服务名称、端口号及服务端口名称的服务才会进行 Endpoint 合并,请在Service的 ports 中完整定义 protocol、port、targetPort 和 name。具体可参见以下示例。
示例:
apiVersion: v1kind: Servicemetadata:name: my-servicespec:ports:- protocol: TCPport: 80targetPort: 9376name: http-mvc- protocol: TCPport: 443targetPort: 8443name: https-mvc
3. 参见 Ingress 创建 Ingress。
说明:
部署 Ingress 后,Ingress 会在容器集群间进行同步创建和更新。
步骤3:关联容器集群
1. 登录 TSE 控制台。
2. 在左侧导航栏单击云原生 API 网关 > Ingress,在页面上方选择网关实例。
3. 未关联容器集群时,页面提示需关联容器集群。
4. 单击立即关联容器集群,选择对接集群类型和集群信息,单击确定,即启用 Kong Ingress Controller。
5. 确认集群绑定成功,状态为 运行中。
步骤3:验证服务信息
1. 在左侧导航栏单击云原生 API 网关 > 路由管理,在页面上方选择网关实例。
2. 单击服务页签,确认从容器集群同步过来的服务显示正确。
3. 单击服务名称,进入服务详情页面,单击服务信息 页签,确认节点信息包含来自多个容器集群的 Endpoint。