作者:蔡靖
对于以后业务运行在 IDC 内的 Kubernetes 集群中,心愿通过云计算为云下业务提供同城灾备的高可用冗余能力,可利用阿里云分布式云容器平台 ACK One [ 1] 来提供对立得流量、利用和集群治理,实现业务流量的多集群路由和劫难状况下的流量的主动平滑容灾。本文次要介绍通过 ACK One 疾速构建混合云同城容灾零碎。
搭建混合云容灾零碎个别须要五个步骤:
- 应用 ACK One 注册集群 治理 IDC / 第三方公共云 K8s 集群
- 实现云下网络与云上 VPC 的互联互通
- 创立 ACK One 舰队 并关联集群
- 应用 ACK One GitOps 公布利用到多个集群(可选)
- 应用 ACK One 多集群网关 治理多集群流量
分布式云容器平台 ACK One
分布式云容器平台 ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。ACK One 能够连贯并治理您任何地区、任何基础设施上的 Kubernetes 集群,并提供统一的治理和社区兼容的 API,反对对计算、网络、存储、平安、监控、日志、作业、利用、流量等进行对立运维管控。
ACK One 注册集群 [ 2] 能够帮忙您将云下 Kubernetes 集群接入云端,疾速搭建混合星散群,能够将本地数据中心 Kubernetes 集群或其余云厂商 Kubernetes 集群接入阿里云容器服务治理平台,进行对立治理。在混合云场景下,承当了至关重要的作用。
ACK One 舰队 [ 3](Fleet)是 ACK One 治理多集群提供的对立入口,为开发者提供多集群 GitOps 利用散发、流量治理、对立运维等能力。其基于成熟的开源社区我的项目 Argo CD [ 4] 和 Open Cluster Management [ 5] 构建,保障了产品的开放性。每个舰队实例则由 ACK 托管,您能够省去大量的运维工作,专一利用开发。
ACK One 多集群网关 [ 6](ACK One Multi-cluster Gateways)是 ACK One 为多云、多集群环境提供的云原生网关,对立治理一个地区的多个集群的七层南北流量。ACK One 通过托管 MSE Ingress [ 7],以 Ingress API 来定义流量路由规定,反对跨多集群的多种能力:HTTP Routing(包含基于 Header 将流量路由到指定集群)、traffic splitting、health-based 主动平滑容灾、traffic mirroring、基于正本数负载平衡流量等。
ACK One GitOps [ 8] 是 ACK One 在 Fleet 实例中托管了 ArgoCD,同时集成 ACK One 的多集群、阿里云的 RAM SSO 等能力,实现多集群下简略、平安的多集群 GitOps 继续交付。
混合云同城容灾零碎架构
基于 ACK One 的注册集群、多集群舰队(GitOps 可选)、多集群网关构建的混合云场景的利用的同城多活容灾零碎如上图所示:
- 阿里云上资源都在 1 个 VPC 中(如图中 VPC 1),在 AZ1 创立 ACK 集群,在 AZ2 中创立注册集群;
- 将 IDC 或第三方公共云 K8s 集群,通过注册集群注册到阿里云;并应用专线买通 IDC 与云上 VPC 的网络,实现云上云下网络互通互联;
- 关联 ACK 集群和注册集群到同 VPC(VPC 1)下的 ACK One Fleet 实例,并通过 ACK One GitOps 向 ACK 集群和注册集群公布利用;
- 在 ACK One Fleet 中,通过 MseIngressConfig 创立 MSE 网关,并增加集群到网关,而后通过在 Fleet 中创立 Ingress 设置流量路由规定,来治理南北向流量(包含实现同城容灾)。
- 本文章针对利用的多集群部署和业务流量的高可用计划,不波及数据库和中间件,相干计划请参考阿里云数据库与中间件文档,例如:数据库同步同步计划:https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/overvie…
构建混合云同城容灾零碎
首先须要对混合云网络进行布局:ACK One Fleet、ACK 集群、注册集群在雷同 VPC 下,ACK 集群和注册集群在不同 AZ。舰队管理网络布局请参见舰队管理网络布局 [ 9]。
之后根据以下几步能够构建混合云同城容灾零碎:
- 应用注册集群治理 IDC / 第三方公共云 K8s 集群
- 实现云下网络与云上 VPC 的互联互通
- 创立舰队并关联集群
- 应用 GitOps 公布利用到多个集群(可选)
- 应用多集群网关治理多集群流量
1. 应用注册集群治理 IDC / 第三方公共云 K8s 集群
本步骤须要将您的 IDC / 第三方公共云 K8s 集群注册到阿里云上。您须要在 ACK/ACK One 创立一个注册集群,并通过集群连贯信息中提供的集群导入代理配置 yaml,将您云下 K8s 集群接入注册集群,请详见通过注册集群对立治理任意环境下的 Kubernetes 集群 [ 10]。
如果您的云下集群还须要将工作负载弹性到云上,能够参见构建混合弹性容器集群(弹性 ECS)[11] 和构建混合弹性集群(ECI)[ 12]。如需应答大量突发状况,可对 ECI 进行高可用配置,请参见创立多可用区的 ECI Pod [ 13]。
IDC / 第三方公共云 K8s 集群胜利接入后,注册集群的状态会变成 “运行中”。
2. 实现云下网络与云上 VPC 的互联互通
构建混合云同城容灾零碎,须要通过多集群网关对云上云下的利用 Pod 进行对立流量治理,所以须要连通 IDC 网络与多集群网关所在 VPC(默认同 ACK One Fleet 雷同 VPC)。将 IDC 网络与云上 VPC 网络连接的计划可参见 VPC 与本地 IDC 链接 [ 14]。倡议采纳专线,连通云上云下网络,请详见混合网络概述 [ 15],次要流程步骤简介如下:
a. 将云下网络通过物理专线接入阿里云。阿里云提供的专线接入计划,请参见物理专线连贯 [ 16]。
b. 创立专线连贯本地数据中心边缘网络设备与云上网关设施边界路由器。
c. 将云上边界路由器与云上专有网络 VPC 退出同一个云企业网。
d. 配置云上边界路由器和本地数据中心 BGP 网络。
e. 云上云下连通性测试。
f. 配置云下网络到云上云产品内网 IP 地址段的路由。
3. 创立舰队并关联集群
在 ACK One 控制台 [ 17] 创立舰队,并关联已胜利导入的注册集群和您新建的 ACK 集群。如下所示:
4. 应用 GitOps 公布利用到多个集群(可选)
本步骤次要是在您的 ACK 集群和云下集群部署您的利用,您能够抉择应用 GitOps 来治理您的多集群利用,具体操作可参考应用 GitOps 部署 web-demo 利用到多个集群 [ 18]。
公布胜利后,可在 GitOps 控制台查看您的利用和资源的状态,确保两个集群中利用在雷同 namespace(多集群网关要求 service 雷同 name、雷同 namespace)。以下是 web-demo 在 ACK 集群中的状态:
5. 应用多集群网关治理多集群流量
最初根据以下几步,应用多集群网关来治理多集群流量,实现利用同城容灾,请详见基于多集群网关实现同城容灾计划 [ 19]。
- 在 ACK One Fleet 中开启多集群网关能力;
- 在 Fleet 中通过创立 MseIngressConfig 来创立网关,并增加 ACK 集群和注册集群到网关;
- 在 Fleet 中创立路由规定(Ingress)实现同城容灾。同城容灾对应的 Ingress 如下所示(namespace 与所公布的利用的 namespace 统一):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-demo
namespace: web-demo
spec:
ingressClassName: mse
rules:
- host: example.com
http:
paths:
- path: /svc1
pathType: Exact
backend:
service:
name: service1
port:
number: 80
总结
ACK One 提供了残缺的多集群治理能力,从集群接入,到利用散发,再到流量治理,反对一站式的利用的治理。对于混合云场景,注册集群还反对以 Serverless 形式(如 ECI)按需调度云上算力,从而疾速应答服务的大规模突发,并无需您运维节点,聚焦利用自身;GitOps 可方便管理云上云下集群利用,并可构建自动化的 CI/CD 流水线,便当利用降级运维;多集群网关则提供弱小的流量治理能力,对南北向多集群流量进行对立治理,缩小独自治理多个集群的老本,升高架构复杂性,晋升流量管理效率。
欢送退出 ACK One 客户交换钉钉群与咱们进行交换。(钉钉群号:35688562)
相干链接:
[1] 分布式云容器平台 ACK One
https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…
[2] ACK One 注册集群
https://help.aliyun.com/zh/ack/overview-9?spm=a2c4g.11186623….
[3] ACK One 舰队
https://help.aliyun.com/zh/ack/fleet-management-overview?spm=…
[4] Argo CD
https://argoproj.github.io/cd/
[5] Open Cluster Management
https://open-cluster-management.io/
[6] ACK One 多集群网关
https://help.aliyun.com/zh/ack/multi-cluster-gateway-overview
[7] MSE Ingress
https://help.aliyun.com/zh/mse/user-guide/overview-of-mse-ing…
[8] ACK One GitOps
https://help.aliyun.com/zh/ack/gitops-overview?spm=a2c4g.1118…
[9] 舰队管理网络布局
https://help.aliyun.com/zh/ack/fleet-management-network-plann…
[10] 通过注册集群对立治理任意环境下的 Kubernetes 集群
https://help.aliyun.com/zh/ack/use-registered-clusters-to-cen…
[11] 构建混合弹性容器集群(弹性 ECS)
https://help.aliyun.com/zh/ack/build-a-hybrid-cloud-cluster-a…
[12] 构建混合弹性集群(ECI)
https://help.aliyun.com/zh/ack/scale-out-elastic-container-in…
[13] 创立多可用区的 ECI Pod
https://help.aliyun.com/zh/ack/serverless-kubernetes/user-gui…
[14] VPC 与本地 IDC 链接
https://help.aliyun.com/zh/vpc/user-guide/network-connection-…
[15] 混合网络概述
https://help.aliyun.com/zh/ack/overview-of-hybrid-networks?sp…
[16] 物理专线连贯
https://help.aliyun.com/zh/express-connect/user-guide/physica…
[17] ACK One 控制台
https://account.aliyun.com/login/login.htm?oauth_callback=htt…
[18] 应用 GitOps 部署 web-demo 利用到多个集群
https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…
[19] 基于多集群网关实现同城容灾计划
https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…