猜你喜欢
云原生落地:企业级DevOps实践

云原生落地:企业级DevOps实践

书籍作者:应阔浩 ISBN:9787111710455
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5969
创建日期:2023-04-29 发布日期:2023-04-29
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
内容简介
这是一本指导企业如何向云原生架构转型的实战性著作。
经过2年多的改造,自如的技术架构成功实现向云原生架构转型,大幅度提高了服务稳定性和开发效率,同时降低了运维成本,因此自如的云原生实践也成为行业公认的标杆。
自如的核心技术团队在本书中对他们的云原生实践的完整过程进行了深度复盘,详细阐述了云原生架构下Kubernetes的组件选型、企业级PaaS平台开发、CI/CD的Z佳实践、服务网格的平滑落地,并结合实际的案例把云原生实践过程中的思考、得失融入其中,助力企业更优雅地实现云原生架构的落地。
通过阅读本书,你将获得以下知识:
?透彻理解云原生的发展历程与意义;
?了解云原生实践应重点关注哪些方向;
?Kubernetes管理后台、关键组件选型以及定制化开发;
?如何研发自定义的企业级Paas平台;
?如何设计持续集成的环境与分支选型;
?如何打造一个一流的CI/CD平台;
?如何选择流水线工具;
?如何设计企业级的持续部署平台;
?如何为工程师打造NPS高的配套工具;
?如何去通过服务网格解决通用的熔断、限流问题;
?如何运营和推广云原生平台,让它100%落地。
作者简介
作者简介
应阔浩
自如技术平台负责人,负责自如网基础架构的研发与技术标准的管理。具备10年京东、阿里等一线互联网公司的架构开发与运维经验,是一位实战型的技术管理者。CCF TF工程师文化SIG主席、中商联智库顾问专家、华为云MVP。关注前沿科技,喜欢挑战现状,拥抱新技术并尝试落地到企业实战中,渴望通过技术助力业务增长。
李建宇
自如运维保障中心负责人,在Linux性能调优、虚拟化、微服务架构方面有较深的研究与实战经验。热衷于探索更好的架构方案,推动工程效能与稳定性提升。目前致力于带领团队在云原生领域持续实践,助力企业数字化转型。
付天时
自如运维保障中心SRE负责人、架构师。负责自如网云原生落地、PaaS平台的开发、Service Mesh落地、中间件的治理和维护、自动化运维平台的开发、SLA的保障等工作。热衷于SLA、效能、成本的优化。认为一个合格的SRE需要具备扎实的技术功底,善于在实践中总结出方法论,具备组织与协调各技术部门并推进技术落地的能力。
赵耀
自如基础架构负责人,云平台架构师。有10 余年一线研发经验,擅长分布式系统架构设计。在自如负责持续交付平台、中间件平台以及监控告警体系的构建。对容器、云原生领域有浓厚兴趣,完整参与了自如的云原生落地从 0 到 60 分的过程。
编辑推荐
适读人群 :?对docker、k8s、微服务、mesh有一定基础的在开发工程师、架构师、运维工程师等。?容器化、架构的广大爱好者。
1.行业标杆案例:自如的云原生实践取得了成功,是行业公认的标杆企业和案例,非常有代表性,适合所有企业借鉴和参考。
2.作者团队资深:自如技术平台负责人亲自带队,自如运维保障中心负责人、SRE负责人、基础架构负责人联合撰写。
3.注重实战,从0到1:压缩理论内容篇幅,从技术选型、原理分析、落地方法、实践案例等多个维度复盘自如实现云原生架构落地的完整过程。
4.17位行业专家推荐:自如董事长兼CEO亲自作序,沈剑、孙玄、乔新亮、史海峰、郭东白等业界大佬高度评价并力荐。
前言
为什么要写这本书
数年前读吴军老师的《浪潮之巅》,书中写到100多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。随着时代的发展,用户的需求在不断改变,技术也在不断地推陈出新。
10年前,云计算的概念被炒得火热,犹记得当时偶遇多年不见的高中同学,问及近期的工作,他说在读研,搞云计算方向,当时我感觉他一定是被导师“忽悠”了—“云计算”太虚无缥缈了,一如今天的“元宇宙”。
质疑阻挡不了技术前进的脚步,新技术对于一些企业来说,往往从最开始的“看不见”,到后来“看不起”,再到“看不懂”,最后终于“跟不上”了。经过10年的演进,无论国外还是国内,云计算的概念已经耳熟能详,上云已经成为许多中小互联网公司的首选。
在“云”这种基础设施平台“摸爬滚打”的10年中, 技术架构也在进行着不断的突破。最开始接触Spring Cloud是在2015年,看Spring官网推出了一套组件,网关、负载均衡、熔断器、定时任务,一套框架全部搞定。这大概就是《增长黑客》中提到“啊哈时刻”。后来公司开始提供多种通用的组件包,Spring Cloud在公司内部逐渐流行。
后来机缘巧合下做一个印度项目,阿里系的技术栈一时间都打了水漂,全都没法用,阿里云在印度也没有节点。为了支持业务,只能闭门造轮子,从开源的ELK取代EagleEye开始入手,重新搭建了一套监控报警体系。为了便于ELK集群的反复快捷构建,不得不去熟悉Dockerf?ile、Compose等新技术。
对于云、以Spring Cloud为代表的微服务、Docker来说,有的工程师可能接触得较晚,而CI/CD对于每一个工程师来说都是一入行便形影不离的体系。犹记得2011年京东的早期发布流程,10个步骤可能有5个步骤都是线下进行的,每次发布都会排队到凌晨,我们今天说的“敏捷”“持续”,在当时看来简直就是神话。直至后来体验了阿里的Aone,我才感受到原来应用发布还可以如此“丝滑”。
对于云原生的实践,完全是来自架构师对新技术的尝试,如同网游中出了新的角色,总想去充值抽卡一样。2018年的自如技术故障连连,发布的问题、环境的问题尤为凸显,因此保障中心最先动手的就是容器化和CI/CD。云当然是第一选择,我们发现当时很多云厂商的云原生配套基本也是在试点阶段,同时Kubernetes已经是众星捧月般的存在了,因此当时的形势造就了自研云原生的落地。
后来的几年间,各大互联网技术会议都少不了云原生相关话题的讨论。自如作为同类型的中型互联网企业,在落地云原生的过程中,有很多共性的问题,于是,我也想把落地过程中的思考、选择、实施路径、走的弯路等一一呈现给大家,期待能够为更多热爱云原生、拥抱新技术的团队提供一些值得借鉴的经验。
读者对象
技术无边界,本书对于广大工程师群体皆适用,尤其适合以下读者阅读。
架构师群体
SRE(Site Reliability Engineer,站点可靠性工程师)或应用运维工程师
想了解容器化转型的运维工程师
想进行开发提效的基础架构工程师
想进行服务网格实践的工程师
DevOps团队
技术负责人、运维负责人、CTO
本书特色
与其他讲解云原生的图书不同,本书会缩减关于云原生理论部分的篇幅,侧重讲解实践。比如:运维侧后台系统如何选择,容器化迁移如何分阶段实施,Kubernetes中的网络模型、存储模型、日志模型如何建设,基于client-go如何做业务功能开发,等等。同时,在开发侧,会给大家呈现建设CI/CD的元数据如何定义,分支模型、环境模型如何统一标准,如何降低研发人员的使用门槛,配套的工具有哪些等内容。
如何阅读本书
本书分为4个部分。
第一部分“云原生基础”(第1~4章) 第1~3章简单介绍了云原生的发展历史、自如技术的发展历程和选择云原生落地的背景。第4章对Docker的核心概念做了简要回顾,没有接触过容器的读者可以阅读此部分,对容器的核心概念做一个宏观了解。
第二部分“云原生落地”(第5~9章) 第5章对Kubernetes的核心概念做了介绍,第6、7章讲解了Kubernetes管理后台以及核心组件如何选择。第8、9章面向企业级的定制开发,对必备的client-go核心组件做了深入剖析。
第三部分“云原生发布平台”(第10~14章) 第10、11章重点对环境、分支等概念做了统一,为后续的CI/CD落地奠定基础。第12、13章分别从持续集成和持续部署两个方面具体介绍云原生架构下的具体实现,比如镜像如何管理、集成工具如何选择、流水线怎么构建、资源如何管理、发布策略如何定义等。第14章介绍一些常用的工具,为整个CI/CD工具锦上添花。
第四部分“云原生迭代”(第15~17章) 第15章侧重讲解平台的推广与运营,第16章对服务网格的落地做了重点展现,比如接入Istio的方法、数据面的配置、限流熔断的实现等内容。第17章是对整本书的总结,重点介绍了在云原生实践过程中的得与失,并提供一些鲜活的案例供读者参考。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现错误或者表述不准确的地方,恳请读者批评指正。
致谢
感谢所有致力于云原生实践的同行,本书的很多实践案例和思路都源于他们的杰出成果。
感谢机械工业出版社华章分社的编辑老师杨福川和韩蕊,他们在这一年多的时间里始终支持我们的写作,鼓励、帮助和引导我们顺利完成书稿写作。
最后感谢在背后支持我们的家人,感谢他们的无声支持!

应阔浩
2022年7月
目录
赞誉

前言
第一部分 云原生基础
第1章 云原生概述 3
1.1 云原生的概念 3
1.1.1 初识云原生 3
1.1.2 官方的定义 6
1.2 云原生的特性 8
1.3 微服务 14
1.3.1 微服务与单体架构的区别 14
1.3.2 什么是微服务 14
1.3.3 微服务架构的优点 15
1.4 容器化 16
1.4.1 虚拟化与容器化的区别 16
1.4.2 容器化的核心原理 18
1.4.3 Docker的优点 20
1.5 编排 21
1.5.1 为什么要有编排 21
1.5.2 什么是编排 22
1.5.3 编排的优点 22
1.6 CI/CD 23
1.6.1 CI/CD诞生的背景 23
1.6.2 什么是CI/CD 23
1.6.3 CI/CD的优点 25
1.7 服务网格 26
1.7.1 服务网格诞生的背景 26
1.7.2 什么是服务网格 27
1.7.3 服务网格的优点 28
1.8 不可变基础设施和声明式API 28
1.8.1 什么是不可变基础设施 28
1.8.2可变与不可变基础设施之间的差异 30
1.8.3 不可变基础设施的优点 30
1.9 本章小结 31
第2章 自如架构演进 32
2.1 技术架构的演进 32
2.1.1 架构的定义与分类 33
2.1.2 单体架构 34
2.1.3 分布式架构 35
2.1.4 微服务架构 36
2.1.5 中台架构 37
2.2 自如的技术发展史 39
2.2.1 业务背景介绍 39
2.2.2 自如的技术演进过程 40
2.2.3 当前技术架构 40
2.3 自如技术架构遇到的问题 41
2.3.1 稳定性问题 42
2.3.2 研发效率问题 43
2.3.3 流程体系问题 43
2.4 本章小结 45
第3章 开启云原生之路 46
3.1 制定云原生战略 46
3.1.1 行业趋势分析 46
3.1.2 战略方向分析 47
3.2 建设DevOps体系 50
3.2.1 DevOps体系的发展方向 50
3.2.2 开发能力差距分析 51
3.2.3建设DevOps体系的路线图 54
3.3 从KVM迁移到Docker 55
3.3.1 现状分析 55
3.3.2 按环境迁移 57
3.3.3 按业务线迁移 58
3.4 本章小结 58
第4章Docker的基础知识与核心原理 59
4.1 容器与Docker 59
4.1.1 虚拟化技术 60
4.1.2 容器技术 60
4.1.3 Docker架构 61
4.1.4 Docker安装与命令 62
4.1.5 Docker常用命令 63
4.2 镜像管理 64
4.2.1 什么是镜像 64
4.2.2 镜像仓库服务 64
4.2.3 镜像的创建与操作 65
4.2.4 Dockerf?ile 65
4.3 Docker网络管理 67
4.4 容器核心原理 68
4.4.1 Namespace资源隔离 68
4.4.2 Cgroups资源限制 69
4.4.3 联合文件系统 69
4.4.4 runC 70
4.5 本章小结 72
第二部分 云原生落地
第5章 Kubernetes基础知识 75
5.1 初识Kubernetes 75
5.1.1 Kubernetes架构 76
5.1.2 Kubernetes核心概念 76
5.1.3 Kubernetes设计理念 78
5.2 Kubernetes资源对象 79
5.2.1 Pod 79
5.2.2 集群资源管理 80
5.2.3 控制器 80
5.2.4 Service 81
5.3 Kubernetes网络体系 82
5.3.1 Kubernetes网络模型 83
5.3.2Kubernetes网络的主要实现方案 83
5.3.3 Kubernetes网络中Pod的通信 84
5.4 存储体系 84
5.4.1 ETCD 84
5.4.2 Conf?igMap 86
5.4.3 Volume 86
5.4.4 Persistent Volume 86
5.4.5 Storage Class 87
5.5 命令工具 87
5.5.1 集群管理 88
5.5.2 集群维护 88
5.6生产级高可用Kubernetes集群方案 89
5.6.1 Kubernetes部署方案 89
5.6.2 Kubernetes部署架构 90
5.6.3 Kubernetes多集群部署架构 92
5.7 本章小结 93
第6章 运维管理后台方案选型 94
6.1 Wayne 95
6.2 Rancher 96
6.3 常用公有云 97
6.3.1 阿里云 97
6.3.2 腾讯云 98
6.3.3 华为云 98
6.4 运维管理方案对比 99
6.5 本章小结 100
第7章 云原生基础组件选型 101
7.1 持久化存储方案 102
7.1.1 存储的选型 102
7.1.2Ceph在Kubernetes中的使用 104
7.2 镜像管理 107
7.2.1 高可用镜像方案 108
7.2.2 镜像清理策略 111
7.3 Ingress实战 112
7.3.1 什么是Ingress-nginx 113
7.3.2多集群多机房高可用负载均衡架构设计 115
7.4 日志采集和展示 117
7.4.1云原生下日志采集的3种方式 117
7.4.2 日志采集设计思路 118
7.4.3 日志效果展示 120
7.4.4 注意事项和思考 122
7.5 监控告警 123
7.5.1 Prometheus Operator 123
7.5.2 告警系统的存储选型 125
7.6 网络方案 126
7.6.1 Flannel网络 127
7.6.2 Calico网络 129
7.6.3 直接路由 129
7.6.4 网络方案对比 130
7.6.5 直接路由方案落地实践 131
7.7 本章小结 133
第8章 Kubernetes开发实战 134
8.1 初识client-go 134
8.1.1 client-go客户端对象 135
8.1.2 KubeConf?ig集群配置 136
8.2 client-go核心组件Informer 137
8.2.1 Informer介绍 138
8.2.2 Informer的架构设计 138
8.2.3 面向用户的Informer资源 140
8.2.4 Ref?lector 142
8.2.5 DeltaFIFO 148
8.2.6 Indexer 152
8.2.7 WorkQueue 154
8.2.8 EventBroadcaster 156
8.2.9 大管家Controller 157
8.3 client-go实战开发