1.4 云原生多云/混合云多集群的使用场景
本节主要介绍云原生多云/混合云多集群的使用场景和优势。
1. 异地多活——跨地域容灾
从设计的角度讲,Kubernetes本身就是一个健壮的分布式系统,在一个高可用配置集群中,比如典型的3 masters + 3 workers集群架构中,即使某个节点出现故障,Kubernetes系统也能通过健康检查和重启策略自动实现Pod故障的自我修复,然后通过调度算法将Pod分布式部署在其他运行健康的节点上,同时保持预期的副本数,实现应用层的高可用性。
从基础设施层面讲,各个云厂商的IaaS产品基本都提供了等级协议(Service Level Agreement,SLA),规定其服务可用性等级指标及赔偿方案,能最大限度地保证用户数据完整性,提供容错能力和快速恢复能力。数据完整性是指云厂商能够保护客户生产数据的精确性和可靠性。容错能力是指云厂商能够及时检测到服务器侧的故障并自动采取补救措施,保证用户业务不受影响。快速恢复是指在发生不可预期的故障时,能够快速且全面地恢复服务的能力。用户可以选择使用这些产品化能力,以最低的成本提升业务应用的高可用性。
从基础设施服务和Kubernetes容器平台这两个维度看,用户可以低成本搭建一个高可用应用业务架构,但是不管上述服务和平台的设计和构建如何全面,都会遇到不可避免的突发事件,这不是会不会发生问题,而是什么时候发生问题。
因此,对于容灾能力要求更高的业务,就需要通过异地多活这样的地域级容灾能力来实现。用户可以在单一云厂商的不同区域搭建多个集群,也可以选择在不同云厂商的不同区域搭建多个集群,或者分别在线下IDC和线上云厂商的不同区域搭建集群,实现业务应用的异地多活部署。图1-2展示了混合云场景下IDC内的容器集群和公有云上容器集群Active-Active的部署。在异地多活架构下,应用的业务负载同时部署在多个集群上,然后使用一个全局的DNS服务将请求转发至对应的后端集群,当其中一个集群发生故障,无法处理请求时,DNS服务会自动处理并转发请求到健康的集群上。
图1-2 多集群使用场景——高可用
2. 低延时——就近访问
对于开展国际业务的用户来说,服务的访问者分布广泛,如果服务器部署在某个特定的区域内,势必会影响其他部分地区的网络。
在这种场景下,我们可以选择在多个地区分别部署集群,通过智能DNS解析将用户请求转发至距离最近的集群进行处理,最大限度地减少网络带来的延迟。图1-3中,某应用服务分别部署于北京、成都、香港3个地区的Kubernetes集群中,华北地区的用户请求会被智能解析到北京的Kubernetes集群上,西南地区的用户请求会被智能解析到成都的Kubernetes集群上,海外的用户请求则会被智能解析到香港的Kubernetes集群上,这样可以最大限度地减少地理距离带来的网络延迟,为各地用户带来一致的服务体验。
图1-3 多集群使用场景——低延时
3. 降低爆炸半径
通常情况下,多个小规模的集群要比一个大规模的集群更容易进行故障隔离。集群有可能因为磁盘、网络等故障导致无法处理请求,使用多个集群可以将故障限制和隔离在某个集群中,避免引起更大的连锁反应。
4. 业务隔离
对于不同的业务需要做好业务隔离,虽然Kubernetes本身也有命名空间机制来帮助用户做安全隔离,但这只是逻辑上的软隔离,不同命名空间之间依然可以网络互通,而且也还存在资源抢占的问题,需要进一步配置网络隔离策略和资源限额。
将不同的业务部署在不同的Kubernetes集群中,可以在物理层面实现业务的彻底隔离,安全性和可靠性均高于使用命名空间进行隔离。例如企业不同部门部署各自独立的集群、使用多个集群分别部署开发、测试、生产环境等。
5. 避免单一云厂商绑定
多云/混合云多集群的云架构可以使企业用户避免被单一云厂商绑定,企业用户不仅可以随时选择某一云厂商提供的前沿技术服务,还可以在必要时以相对小的成本进行业务迁移。除此之外,企业用户在选择云服务的时候还可以“货比三家”,在自主选择最适合自身业务的云服务的同时,拥有一定的议价能力。