Foreword 序 一
近年来,云的边界正逐渐被技术和开源抹平,越来越多的软件和框架从设计开始就不再与单个云绑定。用户喜欢高可用、低成本,不喜欢被厂商绑定,而云厂商仅凭技术和用户体验也很难解除用户对商业竞争的担忧和焦虑。
多云多集群架构天生具备用户喜爱的能力。可以通过多集群提高灾备能力,保证集群高可用;可以通过多云/混合云降低成本,通过调度有策略地进行选择;甚至可以利用不同云厂商的优势和特性,灵活使用不同云厂商的产品和技术。正是这些原因,使得以Kubernetes为核心的多云多集群技术成为云计算的新潮流。
本书从集群安装开始,详细介绍集群管理、网络、弹性、应用编排、服务治理等内容,不仅有理论,还有实践。
相信在未来的云世界里,Kubernetes会成为连通云与应用的“高速公路”,以标准、高效的方式将应用快速交付到世界的任何一个位置。交付目的地既可以是最终用户,也可以是PaaS/Serverless,甚至更加多样化的应用托管生态也会应运而生。让我们一起迎接面向应用的云原生多集群时代,一起拥抱云原生,一起关注应用本身的价值!
张磊
CNCF技术监督委员会成员、阿里巴巴高级技术专家
2021年5月
Foreword 序 二
云原生技术日益普及,分布式云的概念逐渐兴起,云服务提供商提供了可以在本地和其他云基础设施即服务(IaaS)中运行的容器管理功能,与分布式云趋势保持一致。这模糊了软件供应商和云服务提供商之间的界限,加剧了竞争。Gartner预测81%的企业将采用多云/混合云战略,并认为大多数企业采用多云战略是为了避免供应商锁定以及利用最佳解决方案。多云战略让企业采购更灵活,在可用性、性能、数据主权、监管要求及劳动力成本之间能取得平衡。
通过多云架构使用多云服务,实现跨云的高可用和灾难恢复。
运用API化和声明化的工具实现企业统一IT系统管理与监控,更容易实现应用和数据的迁移。
通过统一的服务治理能力,实现多语言微服务跨云、跨地域的分布式治理。
通过云安全的下沉,实现云计算安全能力在企业IT系统的统一。
通过统一的应用中心,为线下Kubernetes集群输出标准的SaaS软件。
本书从阐述云原生技术加速多云/混合云架构变革开始,涵盖了多集群统一管理,混合集群网络规划、弹性伸缩,多集群应用编排、生命周期管理和交付,流量治理和跨集群应用迁移等多个方面,同时包含大量实践案例。
随着多云/混合云战略的逐步深入,我相信松耦合的多云分布式云方案的成本会更低、采用速度会更快,会让企业在不变更已有应用结构的前提下最大限度地获得分布式云管理在弹性、容灾、运维、安全上的红利。
李鹏
阿里云容器服务分布式云技术负责人
2021年5月
前 言
为什么要写这本书
随着云计算技术的蓬勃发展和落地,越来越多的企业选择云计算技术快速完成业务数字化转型,以便更好地适应市场变化,赢得更大的市场空间。一些企业基于降低技术开发和运维成本、享受随时随地的即时服务等原因,将业务部署在云端;一些企业出于数据主权和安全隐私方面的考虑,在内部数据环境中搭建专有云平台;对于公有云和专有云都有需求的企业,会选择搭建混合云架构;还有一些企业为了满足安全合规、成本优化等需求,以及扩大地域覆盖范围,避免固定云厂商绑定,会选择多个云供应商。
云厂商在不同基础设施、不同能力特性以及不同API的基础上构建多云/混合云方案,需要耗费大量精力在适配和整合云平台能力上,同时用另一种形式绑定了用户,使其无法真正按需切换云服务提供商。传统多云/混合云的种种缺陷,导致这种云架构无法形成标准化的生态体系,这也是一直以来我们无法针对这种云架构实现统一管理、统一交付的原因。
Kubernetes的出现让多云/混合云云架构进入了2.0时代,Kubernetes的多项特性及相关生态体系为多云/混合云的标准化提供了可能性,以Kubernetes为代表的云原生技术屏蔽了基础设施的差异性。目前各个云厂商以及大量的数据中心都已经落地云原生技术,使得应用“一次定义,随处部署”成为可能。Kubernetes标准化、声明式的API,简化了应用的部署流程,让应用交付变得越来越标准化和统一化,并且支持在不同的云上使用相同的方式描述和编排应用。
以Kubernetes为代表的云原生技术推动了以应用为中心的多云/混合云云架构的到来,Kubernetes已经成为企业多云管理的事实基础。本书的写作目的是向读者介绍当前多云/混合云多集群管理、混合集群弹性扩容、多集群应用管理和交付、多集群服务网格以及跨集群应用迁移等方面的实践。
本书内容
全书分9章。
第1章介绍云原生的关键技术、特性以及多云/混合云云架构中存在的问题,进而引出云原生技术如何加速多云/混合云云架构的变革,最后列举多云/混合云多集群的使用场景,阐述其在实际生产环境中的价值。
第2章演示如何使用Minikube、Kubeadm和Rancher搭建Kubernetes多集群环境,如何基于公有云容器服务搭建用于企业级应用开发和生产运行的Kubernetes集群,以及如何设置多个集群的环境。
第3章重点介绍如何将不同地域的多个集群统一到同一个控制平面,并以开源社区的集群联邦方案和阿里云注册集群为例展示公有云厂商如何实现多集群的统一管控和安全治理。
第4章重点介绍如何组建一个包含云下和云上网络的混合网络。从Flannel、Calico、Cilium等主流网络插件以及阿里云容器服务Terway网络插件的功能特性入手,对比不同容器网络插件的优缺点和适用场景,还展示了将本地数据中心网络与云上网络专线拉通并配置容器网络互联互通的方案。
第5章介绍如何为本地数据中心内的Kubernetes集群扩容云上弹性资源。
第6章详述多集群云原生应用编排技术,包括如何使用Helm和Kustomize编排多集群应用,达到使用同一份应用编排,根据不同目标集群环境渲染不同参数配置的目的。
第7章介绍如何使用Argo CD系统管理多集群应用的生命周期和应用交付,包括Argo CD的用户管理、源仓库管理、集群管理、项目管理和应用管理等方面的实践。
第8章介绍如何使用Istio服务网格技术跨多集群组建服务网格,包括Istio服务网格技术的基础知识和相关实践。
第9章展示如何对云原生应用进行备份、恢复以及跨集群的应用迁移。
本书包含大量实践案例,且大部分内容都是基于开源项目,希望读者能够亲自动手运行,结合开源项目的源码,详细了解每一个项目或组件的工作流程。
适用读者
需要对多个Kubernetes集群进行资源统一管理、安全统一治理、应用统一交付的系统管理员。
需要部署跨集群应用的应用管理员。
需要为本地数据中心内的Kubernetes集群扩容云上弹性资源的系统管理员。
需要在不同Kubernetes集群之间迁移应用的开发运维人员。
云原生技术爱好者。