作者 |
布兰登·伯恩斯 埃迪·维拉尔巴 戴夫·斯特雷贝尔 拉克兰·埃文森 杨章显 |
丛书名 |
O’Reilly精品图书系列 |
出版社 |
机械工业出版社 |
ISBN |
9782101251563 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------Kubernetes实战--------------------------- 在本书中,四位在分布式系统、企业应用开发和开源领域有着丰富经验的 Kubernetes 专家将会对如何使用 Kubernetes 容器编排系统构建应用进行全程指导。本书内容丰富,涵盖开发人员的工作流程、监控和度量指标、配置管理、持续集成和测试、版本控制与发布、应用程序的全球化部署、资源管理、网络、Pod安全、集群策略与治理、多集群管理、外部服务集成、机器学习、如何在Kubernetes上构建更高层次的平台、状态管理和有状态应用程序、许可控制与授权等,是一本非常全面的实践指南。 ---------------------------Service Mesh实战:基于Linkerd和Kubernetes的微服务实践--------------------------- 内容简介 这是一部面向生产实践环境的Service Mesh实战指南,它讲解了如何基于Linkerd和Kubernetes开发和部署微服务。 作者是思科的高级工程师,是国内Service Mesh领域的先驱者,较早将Linkerd应用到了生产实践中。书中详细介绍了Linkerd能解决什么样的问题,会给开发和运维人员带来什么样的好处。融合作者使用Linkerd的一些经验和教训,详细阐述了如何配置、部署和管理Linkerd以及在Kubernetes平台运行微服务,并且讲述了如何开发自定义Linkerd插件实现特定功能。通过这一系列内容的学习,读者将理解Linkerd的工作原理,甚至对学习或者开发他Service Mesh也具有深刻的借鉴意义。 全书共9章,分为三个部分: 第一部分(第1~2章) 基础篇 第1章主要介绍了Service Mesh的起源、功能、现有产品,以及技术选型的考量;第2章是Linkerd的入门,讲解了Linkerd及其工作环境的安装、配置和部署。 第二部分(第3~6章) 中级篇 . 这部分内容是本书的核心之一,依次讲解了Linkerd的配置、数据流工作原理、部署模式的选择,以及它的控制面板Namerd如何管理多个Linkerd实例以及通过Linkerd实现运行时动态切换流量。 第三部分(第7~9章) 实战篇 第7章首先讲解了阅读本书必须掌握的Kubernetes的基础知识;第8章重点通过实例演示了如何以Linkerd作为Kubernetes的Service Mesh工具运行微服务;第9章讲述了如何开发自定义的Linkerd插件来实现特定的功能。 |
目录 |
---------------------------Kubernetes实战--------------------------- 前言1 第1章 搭建一个基本服务7 1.1 应用程序概览7 1.2 配置文件管理7 1.3 使用Deployment创建多副本服务9 1.4 为HTTP流量配置外部Ingress12 1.5 使用ConfigMap配置应用程序13 1.6 使用Secret管理认证15 1.7 部署简单的有状态数据库18 1.8 使用服务创建TCP负载均衡器21 1.9 使用Ingress将流量路由到静态文件服务器22 1.10 使用Helm参数化应用程序24 1.11 部署服务的最佳实践26 1.12 小结27 第2章 开发者工作流29 2.1 目的29 2.2 搭建开发集群30 2.3 为多个开发者搭建共享集群31 2.4 启动开发者工作流38 2.5 环境初始化38 2.6 启动开发39 2.7 启动测试与调试40 2.8 搭建开发环境的最佳实践40 2.9 小结41 第3章 监控与日志43 3.1 指标与日志43 3.2 监控技术43 3.3 监控模式44 3.4 Kubernetes指标概述45 3.5 应该监控什么指标48 3.6 监控工具49 3.7 使用Prometheus监控Kubernetes51 3.8 日志概述55 3.9 日志工具57 3.10 使用EFK记录日志58 3.11 告警60 3.12 监控、日志及告警的最佳实践62 3.13 小结63 第4章 配置、机密以及RBAC65 4.1 通过ConfigMap和Secret配置应用65 4.2 ConfigMap和Secret API的最佳实践67 4.3 RBAC73 4.4 小结78 第5章 持续集成、测试和部署79 5.1 版本控制80 5.2 持续集成80 5.3 测试81 5.4 镜像构建81 5.5 为镜像标记标签82 5.6 持续部署83 5.7 部署策略84 5.8 生产环境中的测试88 5.9 搭建流水线并进行混沌试验89 5.10 CI/CD的最佳实践94 5.11 小结95 第6章 版本控制、发布和部署97 6.1 版本控制97 6.2 发布98 6.3 部署99 6.4 综合示例100 6.5 小结104 第7章 全球化应用的分发和预演105 7.1 镜像的分发106 7.2 参数化部署107 7.3 全球流量负载均衡107 7.4 可靠的全球化部署108 7.5 如何应对出现的问题113 7.6 全球化部署的最佳实践114 7.7 小结115 第8章 资源管理117 8.1 Kubernetes Scheduler117 8.2 高级调度技术119 8.3 Pod资源管理122 8.4 资源管理的最佳实践136 8.5 小结136 第9章 网络、网络安全与服务网格137 9.1 Kubernetes的网络原则137 9.2 网络插件139 9.3 Kubernetes中的服务142 9.4 网络安全策略149 9.5 服务网格153 9.6 小结155 第10章 Pod和容器安全157 10.1 PodSecurityPolicy API157 10.2 工作负载隔离和RuntimeClass170 10.3 其他Pod和容器安全注意事项172 10.4 小结173 第11章 集群的策略和治理175 11.1 为什么策略和治理很重要175 11.2 这里所说的策略有何不同175 11.3 云原生策略引擎176 11.4 Gatekeeper简介176 11.5 审计181 11.6 策略和治理的最佳实践183 11.7 小结184 第12章 多集群管理185 12.1 为什么需要多集群185 12.2 多集群设计的考量187 12.3 多集群部署管理189 12.4 GitOps集群管理方式191 12.5 多集群管理工具194 12.6 Kubernetes Federation194 12.7 多集群管理的最佳实践197 12.8 小结198 第13章 集成外部服务和 Kubernetes199 13.1 将外部服务导入Kubernetes199 13.2 将Kubernetes服务导出到外部203 13.3 在Kubernetes之间共享服务207 13.4 第三方工具207 13.5 连接集群和外部服务的最佳实践208 13.6 小结208 第14章 在Kubernetes上运行机器学习工作负载209 14.1 为什么Kubernetes非常适合机器学习209 14.2 机器学习工作流210 14.3 Kubernetes集群管理员与机器学习211 14.4 数据科学家关心的事218 14.5 在Kubernetes上运行机器学习工作负载的最佳实践219 14.6 小结220 第15章 在Kubernetes上构建高层应用的模式221 15.1 开发高层抽象的方法221 15.2 扩展Kubernetes222 15.3 构建平台时的设计考量224 15.4 构建应用平台的最佳实践226 15.5 小结227 第16章 管理状态和有状态应用229 16.1 卷和卷挂载230 16.2 Kubernetes存储231 16.3 有状态应用235 16.4 小结240 第17章 准入控制和授权241 17.1 准入控制241 17.2 授权248 17.3 小结251 第18章 总结253 ---------------------------Service Mesh实战:基于Linkerd和Kubernetes的微服务实践--------------------------- 前言 第一部分 基础篇 第1章 Service Mesh简介 2 1.1 微服务架构面临的一些挑战 2 1.2 技术架构演进 6 1.3 什么是Service Mesh 9 1.4 Service Mesh的功能 10 1.5 业界Service Mesh产品 11 1.5.1 Linkerd 11 1.5.2 Envoy 12 1.5.3 Istio 13 1.5.4 Conduit 13 1.5.5 Linkerd、Envoy、Istio及Conduit比较 14 1.5.6 我们需要Service Mesh吗 15 1.6 总结 15 第2章 Linkerd入门 16 2.1 Linkerd是什么 16 2.2 Linkerd架构 17 2.3 Linkerd主要功能 19 2.4 安装Linkerd 21 2.4.1 环境准备 21 2.4.2 传统安装方式 24 2.4.3 基于Docker的安装方式 27 2.5 示例演示 28 2.5.1 示例准备 28 2.5.2 基于文件的服务发现 28 2.5.3 示例演示 29 2.6 总结 30 第二部分 中级篇 第3章 深入浅出Linkerd配置 32 3.1 示例应用 32 3.2 环境准备 34 3.2.1 虚拟机及Docker引擎 34 3.2.2 服务发现:Consul 35 3.2.3 服务注册:Registrator 37 3.2.4 部署Linkerd 38 3.2.5 部署示例服务 41 3.3 Linkerd术语 45 3.4 Linkerd配置 46 3.4.1 配置构成 46 3.4.2 admin 48 3.4.3 namer 48 3.4.4 router 50 3.4.5 telemetry 55 3.4.6 usage 55 3.5 总结 55 第4章 深入Linkerd数据访问流 56 4.1 dtab详解 56 4.1.1 dtab定义 56 4.1.2 dtab路由原理 57 4.1.3 示例演示 60 4.2 数据访问流详解 62 4.2.1 鉴别 62 4.2.2 绑定 63 4.2.3 解析 64 4.2.4 转换 64 4.2.5 负载均衡 65 4.3 总结 67 第5章 Linkerd部署模式 68 5.1 Linkerd部署模式 68 5.1.1 Per-host模式 68 5.1.2 Sidecar模式 69 5.1.3 Per-host模式和Sidecar模式 69 5.2 配置模型 70 5.2.1 service-to-linker模型 70 5.2.2 linker-to-service模型 73 5.2.3 linker-to-linker模型 76 5.3 总结 78 第6章 Linkerd控制层:Namerd 79 6.1 Namerd简介 79 6.2 Namerd和Linkerd 80 6.3 Namerd配置详解 82 6.3.1 admin配置 82 6.3.2 interface配置 83 6.3.3 storage配置 84 6.3.4 namer配置 85 6.4 连接Linkerd和Namerd 85 6.4.1 准备Namerd配置文件 85 6.4.2 启动Namerd 86 6.4.3 准备Linkerd配置文件 88 6.4.4 启动Linkerd 89 6.4.5 示例演示 90 6.5 管理dtab路由 90 6.5.1 Namerd API简介 90 6.5.2 通过Namerd API管理dtab 91 6.5.3 通过namerctl CLI管理dtab 92 6.6 总结 93 第三部分 实战篇 第7章 Kubernetes基础 96 7.1 Kubernetes是什么 96 7.2 为什么需要Kubernetes 97 7.3 Kubernetes架构 99 7.4 使用Kubeadm部署Kubernetes集群 100 7.4.1 部署环境准备 100 7.4.2 部署Kubernetes集群 101 7.5 Kubernetes基本概念及资源生命周期管理 108 7.5.1 Container Runtime 108 7.5.2 Container 108 7.5.3 Pod 109 7.5.4 Label 112 7.5.5 RelicaSet 114 7.5.6 Deployment 116 7.5.7 Service 119 7.5.8 DaemonSet 121 7.5.9 ConfigMap和Secret 124 7.6 总结 128 第8章 基于Linkerd和Kubernetes的微服务实践 129 8.1 部署服务于Kubernetes平台 130 8.1.1 定义示例服务声明文件 130 8.1.2 架构预览 132 8.1.3 部署示例服务 133 8.1.4 验证 134 8.2 Linkerd作为Kubernetes平台的Service Mesh工具 135 8.2.1 架构预览 136 8.2.2 Kubernetes平台上如何配置Linkerd 137 8.2.3 运行Linkerd 141 8.2.4 部署示例服务 142 8.2.5 验证 144 8.3 服务间端到端的TLS加密 145 8.3.1 SSL/TLS简介 146 8.3.2 Linkerd透明TLS 147 8.3.3 架构预览 150 8.3.4 生成证书 151 8.3.5 配置Linkerd 151 8.3.6 运行Linkerd及示例服务 152 8.3.7 验证 153 8.4 Linkerd作为Kubernetes的Ingress Controller 155 8.4.1 架构预览 156 8.4.2 Ingress Identifer简介 157 8.4.3 配置Lnkerd 158 8.4.4 运行Linkerd及示例服务 160 8.4.5 验证 160 8.5 Linkerd作为边界流量入口 164 8.5.1 架构预览 164 8.5.2 Ingress Controller局限性 165 8.5.3 部署内部Linkerd和示例服务 165 8.5.4 部署边界Linkerd 166 8.5.5 HAproxy作为边界Linkerd负载均衡器 167 8.6 Linkerd作为边界出口 171 8.6.1 架构预览 172 8.6.2 部署EgressLinkerd 173 8.6.3 部署示例服务 177 8.6.4 部署内部Linkerd 177 8.7 基于Linkerd实现运行时路由 182 8.7.1 运行时单个请求路由 182 8.7.2 基于Namerd实现全局动态路由 185 8.8 总结 198 第9章 开发Linkerd插件 199 9.1 Linkerd模块开发框架 199 9.2 如何开发自定义插件 202 9.2.1 需求定义 202 9.2.2 环境准备 203 9.2.3 代码开发 203 9.2.4 编译 207 9.2.5 安装 209 9.2.6 验证 210 9.3 总结 213 |