内容简介
这是一本讲解如何在多云/混合云的环境下进行多集群管理、多集群应用编排以及应用管理和跨集群迁移的著作。
作者是阿里云容器服务云原生分布式云团队核心成员,他基于自己丰富的工程实践经验,详细讲解了:
?云原生的关键技术、多云/混合云云架构的变革和存在的问题,以及多云/混合云多集群的使用场景和价值;
?如何将不同地域的多个集群统一到同一个控制平面,给出了多集群统一管理的方案;
?Flannel、Calico、Cilium等主流容器网络插件以及阿里云容器服务Terway网络插件的功能和适用场景,以及如何组建一个包含云下和云上网络且互联互通的混合网络;
?如何为本地数据中心内的Kubernetes集群扩容云上弹性资源。
?如何用Helm和Kustomize工具对需要部署到多个集群的应用进行编排;
?如何使用Argo CD系统管理多集群应用的生命周期和应用交付;
?如何使用Istio服务网格技术跨多集群组建服务网格;
?如何对云原生应用进行备份、恢复以及跨集群的应用迁移。
(1)作者工程经验丰富:云原生技术专家,阿里云容器服务云原生分布式云团队核心成员,在多云/混合云架构下的多集群管理和混合集群弹性扩容方面经验丰富。(2)多位专家联袂推荐:阿里云容器服务团队负责人易立、CNCF技术监督委员会成员张磊、阿里云容器服务分布式云技术负责人等专家一致推荐。(3)内容来自阿里实践:本书注重实践,书中总结了作者在阿里积累的大量项目实战经验,书中有大量案例。
为什么要写这本书
随着云计算技术的蓬勃发展和落地,越来越多的企业选择云计算技术快速完成业务数字化转型,以便更好地适应市场变化,赢得更大的市场空间。一些企业基于降低技术开发和运维成本、享受随时随地的即时服务等原因,将业务部署在云端;一些企业出于数据主权和安全隐私方面的考虑,在内部数据环境中搭建专有云平台;对于公有云和专有云都有需求的企业,会选择搭建混合云架构;还有一些企业为了满足安全合规、成本优化等需求,以及扩大地域覆盖范围,避免固定云厂商绑定,会选择多个云供应商。
云厂商在不同基础设施、不同能力特性以及不同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集群之间迁移应用的开发运维人员。
云原生技术爱好者。
勘误
由于作者水平有限,编写时间仓促,书中难免会存在一些错误或者不准确的地方,如果读者发现了问题,请及时与我联系。我的邮箱是haoshuwei24@gmail.com。
致谢
感谢所有为本书撰写、出版提供帮助的人。
首先要特别感谢我所在的阿里云容器服务团队负责人易立、容器服务分布式云技术负责人以及每一位同事,正是有了他们的支持和团队的智慧,我才能在有限的时间内将这些经验、知识总结成一本书。
感谢机械工业出版社华章公司的杨福川编辑,是他促成了这本书的出版;感谢韩蕊编辑,是她多次高效率的审稿极大地提升了本书的质量。
特别感谢我的爱人、父母,他们在我写书期间给予我极大的支持;感谢刚刚能满地跑的我的小宝宝,他在工作和生活中给予我无限力量。他们是我人生中宝贵的财富。
本书在撰写过程中参考了很多开源社区和云厂商的资料,恕不一一列举,在此对这些同行表示衷心感谢。
后,感谢正在阅读本书的你,希望你可以从本书中获取有价值的知识。
作者简介(照片)
郝树伟
毕业于北京大学,阿里云容器服务技术专家,曾就职于IBM。
阿里云容器服务云原生分布式云团队核心成员,专注于云原生多云和混合云多集群统一管理和调度、混合集群、应用交付和迁移等云原生技术的研究。
序一
序二
前言
第1章 云原生与多云/混合云 1
1.1什么是云原生 1
1.1.1云原生的定义 1
1.1.2云原生关键技术概述 2
1.2多云/混合云 7
1.2.1什么是多云/混合云 7
1.2.2为什么需要多云/混合云 8
1.3云原生技术助力多云/混合云云架构变革 9
1.4云原生多云/混合云多集群的使用场景 9
1.5本章小结 12
第2章 快速搭建Kubernetes多集群环境 13
2.1使用Minikube搭建本地Kubernetes集群 13
2.2使用Kubeadm搭建Kubernetes集群 16
2.3使用Rancher搭建Kubernetes集群 20
2.4使用公有云容器服务搭建Kubernetes集群 24
2.5配置多集群的访问和切换 27
2.6本章小结 30
第3章 多云/混合云多集群统一管理 31
3.1多云/混合云多集群管理现状 31
3.2云上云下Kubernetes多集群环境准备 32
3.3KubeFed详解 33
3.3.1KubeFed架构设计 33
3.3.2Helm Chart部署KubeFed 35
3.3.3集群注册 36
3.3.4部署联邦应用 37
3.3.5KubeFed的发展现状 41
3.4公有云厂商的集群纳管解决方案 41
3.4.1注册集群的架构设计 41
3.4.2通信链路安全 43
3.4.3Kubernetes API 隧道 45
3.5纳管自建Kubernetes集群 46
3.5.1创建注册集群 46
3.5.2接入注册集群 48
3.5.3注册集群的使用 52
3.6统一的权限管理 54
3.6.1用户管理 54
3.6.2统一授权 56
3.7本章小结 59
第4章 混合集群——混合网络 60
4.1容器网络接口 60
4.2Flannel网络插件 62
4.2.1VXLAN模式 62
4.2.2UDP模式 65
4.2.3host-gw模式 65
4.3Calico网络插件 66
4.3.1IPIP模式 66
4.3.2BGP模式 69
4.3.3网络策略 75
4.4Cilium网络插件 76
4.4.1eBPF技术 76
4.4.2架构设计 77
4.4.3功能特性 78
4.4.4安装和部署 79
4.4.5网络和网络策略的可视化 81
4.4.6网络策略 83
4.4.7多集群组网 92
4.5Terway网络插件 98
4.5.1使用限制 99
4.5.2Terway网络规划和准备 100
4.5.3创建Terway网络集群 100
4.5.4网络安全策略 102
4.5.5扩容Terway网络集群 104
4.6容器网络插件对比 105
4.7混合集群网络 105
4.7.1混合集群网络模式 106
4.7.2云上云下互联互通专线方案 108
4.7.3云企业网 109
4.7.4边界路由器BGP配置 109
4.8本章小结 111
第5章 混合集群——弹性伸缩 112
5.1接入注册集群 112
5.1.1创建注册集群 112
5.1.2配置网络插件 113
5.1.3配置自定义节点添加脚本 115
5.2集群扩容 121
5.2.1节点池概述 122
5.2.2创建节点池 122
5.2.3节点池扩容 125
5.2.4部署示例应用 127
5.3自动弹性伸缩 129
5.3.1自动弹性伸缩概述 129
5.3.2创建弹性节点池 129
5.3.3部署示例应用 132
5.4虚拟节点和弹性容器实例 134
5.4.1虚拟节点和弹性容器实例概述 134
5.4.2安装、部署虚拟节点组件 134
5.4.3部署示例应用 135
5.5本章小结 136
第6章 多云/混合云多集群应用编排 137
6.1Kubernetes应用编排技术 137
6.2Helm应用编排 140
6.2.1Helm项目概述 140
6.2.2安装Helm 141
6.2.3Helm Chart的使用 142
6.2.4Helm仓库的搭建和使用 145
6.2.5使用Helm编排Guestbook应用并进行多集群部署 148
6.3Kustomize应用编排 152
6.3.1Kustomize项目概述 152
6.3.2Kustomize的安装和使用 153
6.4本章小结 157
第7章 应用统一管理和交付——Argo CD 158
7.1Argo CD概述 158
7.1.1Argo CD的核心概念 159
7.1.2Argo CD架构设计与工作原理 159
7.2Argo CD的安装和配置 161
7.2.1安装Argo CD 161
7.2.2Argo CD的访问方式 163
7.2.3卸载Argo CD 165
7.3用户管理 165
7.3.1本地用户 165
7.3.2集成SSO 167
7.4源仓库管理 170
7.4.1Git类型源仓库管理 170
7.4.2Helm类型源仓库管理 172
7.4.3存储位置 173
7.5集群管理 174
7.5.1外部集群管理 174
7.5.2集群RBAC权限设置 177
7.6项目管理 177
7.6.1默认项目 178
7.6.2创建项目 178
7.6.3管理项目 179
7.6.4项目角色 181
7.6.5使用UI管理项目 183
7.7应用管理 184
7.7.1创建应用 184
7.7.2应用的统一视图管理 191
7.7.3应用的更新和回滚 192
7.8本章小结 200
第8章 服务统一治理 201
8.1Istio服务网格 201
8.1.1什么是服务网格 201
8.1.2Istio服务网格架构 202
8.2Istio服务网格的流量治理 204
8.2.1虚拟服务 204
8.2.2目标规则 205
8.2.3网关 206
8.2.4服务入口 207
8.3部署Istio服务网格组件和示例应用 207
8.3.1安装和部署Istio 207
8.3.2部署示例应用 209
8.4Istio东西流量管理 211
8.4.1配置动态路由 211
8.4.2故障注入 214
8.4.3灰度流量 216
8.4.4熔断 217
8.5Istio多集群部署管理 219
8.5.1使用限制和准备工作 219
8.5.2单一网络共享控制平面部署模型 220
8.5.3单一网络多控制平面部署模型 224
8.5.4多网络共享控制平面部署模型 226
8.5.5多网络多控制平面部署模型 231
8.5.6验证服务网格中东西流量的示例应用 234
8.6跨地域多集群流量统一治理 236
8.7本章小结 243
第9章 应用的备份恢复和跨集群迁移 244
9.1Velero概述 244
9.1.1什么是Velero 244
9.1.2Velero的工作原理 245
9.2Velero的安装和配置 246
9.2.1安装Velero客户端 246
9.2.2安装和启动Minio对象存储服务 247
9.2.3安装和配置Velero服务组件 248
9.2.4卸载Velero 251
9.3提供商与插件 251
9.4存储位置 252
9.4.1BackupStorageLocation 252
9.4.2VolumeSnapshotLocation 253
9.4.3使用限制和注意事项 254
9.4.4一些常用的配置策略和使用方法 254
9.5备份和恢复 256
9.5.1备份 256
9.5.2恢复 260
9.5.3定时备份 264
9.6Restic集成 264
9.6.1Velero集成Restic 265
9.6.2备份与恢复 266
9.6.3Velero集成Restic进行备份和恢复 270
9.6.4使用限制 275
9.6.5使用自定义初始化容器配置 275
9.7灾难恢复和跨集群迁移实践 277
9.7.1Velero 客户端和服务端的安装 277
9.7.2灾难恢复 279
9.7.3集群/应用迁移 280
9.8本章小结 282