作者 |
布兰登·伯恩斯 埃迪·维拉尔巴 戴夫·斯特雷贝尔 拉克兰·埃文森 陆平 左奇 付光 张晗 |
丛书名 |
O’Reilly精品图书系列 |
出版社 |
机械工业出版社 |
ISBN |
9782101251515 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------Kubernetes实战--------------------------- 在本书中,四位在分布式系统、企业应用开发和开源领域有着丰富经验的 Kubernetes 专家将会对如何使用 Kubernetes 容器编排系统构建应用进行全程指导。本书内容丰富,涵盖开发人员的工作流程、监控和度量指标、配置管理、持续集成和测试、版本控制与发布、应用程序的全球化部署、资源管理、网络、Pod安全、集群策略与治理、多集群管理、外部服务集成、机器学习、如何在Kubernetes上构建更高层次的平台、状态管理和有状态应用程序、许可控制与授权等,是一本非常全面的实践指南。 ---------------------------基于Kubernetes的容器云平台实战--------------------------- 从PaaS平台建设和运维的角度去理解、分析和解决问题,囊括了Docker入门、Kubernetes技术架构及核心原理、网络及存储方案、行业实践指南、PaaS生态链以及发展趋势等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面,具有很强的可借鉴性。 |
目录 |
---------------------------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 ---------------------------基于Kubernetes的容器云平台实战--------------------------- 序 前言 第1章 Docker简介 1 1.1 什么是Docker 1 1.2 为什么要用Docker 3 1.3 Docker基本概念 4 1.3.1 镜像 4 1.3.2 容器 6 1.3.3 镜像仓库 8 1.4 Docker架构及原理 8 1.4.1 Docker架构 8 1.4.2 Docker原理 11 1.4.3 容器网络 15 1.4.4 容器存储 16 1.5 Docker安装 16 1.5.1 手动安装模式 17 1.5.2 Ubuntu中自动化安装Docker 18 1.5.3 CentOS中自动化安装Docker 19 第2章 容器引擎 21 2.1 容器引擎实现原理 22 2.2 容器生命周期管理 29 2.3 容器状态管理 33 2.4 访问运行状态容器 35 2.5 访问容器内容 36 第3章 镜像管理 37 3.1 Dockerfile及镜像制作 37 3.1.1 Dockerfile的作用 37 3.1.2 Dockerfile文件构成 37 3.1.3 常用命令集 38 3.1.4 构建镜像 38 3.2 镜像基本操作 38 3.2.1 从镜像仓库下载镜像 38 3.2.2 将本地镜像上传到镜像仓库 39 3.2.3 查看本地镜像 39 3.2.4 导出和导入本地镜像 40 3.2.5 构建镜像 41 3.2.6 修改本地镜像标识 42 3.2.7 删除本地镜像 42 3.3 Dockerfile优化 42 3.3.1 Dockerfile检查项 42 3.3.2 Dockerfile优化实例 43 3.3.3 检查及优化工具 44 3.4 操作系统基础镜像制作 44 3.4.1 操作系统版本选择 45 3.4.2 操作系统参数调整 45 3.4.3 确定基础rpm包范围 45 3.4.4 确定常用命令范围 46 3.4.5 操作系统镜像制作过程 48 3.4.6 系统资源限制配置说明 49 3.5 容器镜像安全加固 49 3.5.1 容器安全加固规范 49 3.5.2 安全检查工具 51 第4章 镜像仓库管理 52 4.1 Docker Registry 52 4.1.1 Docker Hub 52 4.1.2 第三方公共仓库 53 4.1.3 建立私有镜像仓库 53 4.2 Harbor 54 4.2.1 Harbor架构 55 4.2.2 Harbor的镜像同步机制 56 4.2.3 Harbor用户认证 56 4.2.4 Harbor容器镜像安全扫描 57 4.2.5 Harbor部署实战 57 第5章 Docker相关部署实践 59 5.1 MySQL Docker部署实践 59 5.1.1 MySQL简介 59 5.1.2 MySQL为什么要容器化部署 60 5.1.3 MySQL容器化操作实践 60 5.2 Docker支持GPU实践 62 5.2.1 GPU简介 62 5.2.2 CPU与GPU的对比 63 5.2.3 通过nvidia-docker使用GPU 63 第6章 Kubernetes简介 65 6.1 PaaS简介 65 6.1.1 传统PaaS系统 65 6.1.2 基于Docker的新型PaaS平台 67 6.2 为什么需要Kubernetes 69 6.3 Kubernetes的由来 69 6.3.1 Kubernetes的特点 69 6.3.2 Kubernetes的历史 70 6.4 Kubernetes核心概念 71 第7章 Kubernetes架构和部署 73 7.1 Kubernetes架构及组件 73 7.1.1 Master节点 73 7.1.2 Node节点 75 7.1.3 调度控制原理 76 7.1.4 集群功能模块间的通信 76 7.1.5 Kubernetes高可用方案 77 7.2 Kubernetes部署方案总结 77 第8章 Pod相关核心技术 81 8.1 Pod 81 8.1.1 Pod定义文件详解 81 8.1.2 基本操作 83 8.1.3 Pod与容器 85 8.1.4 镜像 86 8.1.5 其他设置 86 8.1.6 Pod调度 89 8.1.7 Pod生命周期 90 8.2 Label 92 8.3 Replication Controller和Replica Set 93 8.3.1 RC定义文件详解 93 8.3.2 RC与Pod的关联——Label 95 8.3.3 弹性伸缩 97 8.3.4 滚动升级 98 8.3.5 新一代副本控制器Replica Set 100 8.4 Horizontal Pod Autoscaler 101 8.5 Deployment 102 8.6 Job 105 8.7 StatefulSet 106 8.7.1 使用StatefulSet 106 8.7.2 扩容/缩容StatefulSet 108 8.8 ConfigMap 110 8.9 健康检查 112 8.9.1 流程健康检查 112 8.9.2 应用健康检查 112 第9章 Kubernetes Service 114 9.1 容器及Pod间通信 115 9.2 kube-proxy 117 9.3 DNS服务发现机制 118 9.4 Headless服务 119 9.5 Kubernetes服务 120 9.5.1 ClusterIP 122 9.5.2 NodePort 123 9.5.3 LoadBalancer 125 9.5.4 Ingress 125 9.6 网络策略 127 9.7 完整的Kubernetes服务发布实践 128 9.7.1 各Kubernetes集群 LoadBalancer服务发布 130 9.7.2 Ingress服务发布 132 9.7.3 服务发现 133 第10章 Kubernetes网络 134 10.1 单主机Docker网络通信 134 10.1.1 Host模式 135 10.1.2 Container模式 135 10.1.3 None模式 136 10.1.4 Bridge模式 136 10.1.5 基础网络模型的优缺点分析 137 10.2 跨主机Docker网络通信 137 10.2.1 Flannel网络方案 139 10.2.2 Calico网络方案 140 10.2.3 利用Kuryr整合OpenStack与Kubernetes网络 143 10.2.4 网络方案对比分析 144 第11章 Kubernetes存储 145 11.1 存储使用场景 145 11.2 文件存储的几种形式 146 11.3 Flex Volume存储管理方案 148 11.3.1 为什么需要灵活存储组件 148 11.3.2 如何实现灵活存储组件 148 11.4 标准化容器存储接口CSI 149 第12章 安全及多租户配额管理 150 12.1 API服务器认证 151 12.2 API服务器授权 152 12.3 Admission Control 152 12.4 Service Account 154 12.5 配额管理 155 12.5.1 资源请求与限制 155 12.5.2 全局默认配额 156 12.5.3 多租户资源配额管理 157 第13章 Kubernetes运维管理 161 13.1 Kubernetes日志管理 161 13.1.1 日志概述 161 13.1.2 ELK日志管理方案实践 162 13.2 Kubernetes监控管理 172 13.2.1 监控概述 172 13.2.2 监控方案实践 172 第14章 TensorFlow on Kubernetes 182 14.1 TensorFlow简介 182 14.2 在Kubernetes上部署TensorFlow的价值 183 14.3 Kubernetes如何支持GPU 184 14.3.1 使用方法 184 14.3.2 多种型号的GPU 186 14.3.3 使用CUDA库 187 14.4 TensorFlow on Kubernetes架构 188 14.5 TensorFlow部署实践 189 14.5.1 下载镜像 189 14.5.2 yaml文件准备 189 14.5.3 执行命令安装TensorFlow 190 第15章 Spark on Kubernetes 191 15.1 Spark系统概述 191 15.1.1 Spark简介 191 15.1.2 Spark与Hadoop差异 191 15.1.3 功能模块 192 15.1.4 功能关系 192 15.2 基于容器技术的Spark部署 193 15.2.1 基于容器技术部署Spark的优势 193 15.2.2 针对大数据应用:容器的计算性能优化方向 194 15.2.3 针对大数据应用:容器的网络性能优化方向 194 15.2.4 针对大数据应用:容器的弹性&扩容 194 15.3 Spark集群安装 195 15.3.1 制作Spark镜像 195 15.3.2 yaml文件准备 195 15.3.3 执行命令安装Spark 196 第16章 金融容器云平台总体设计方案 197 16.1 金融行业为什么需要容器云平台 197 16.2 容器及编排技术选型 198 16.2.1 容器选型 198 16.2.2 编排引擎选型 199 16.3 架构设计 199 16.3.1 系统架构 199 16.3.2 逻辑架构 200 16.3.3 数据架构 202 16.3.4 技术架构 205 16.3.5 部署架构 206 16.4 关键模块方案设计 206 16.4.1 网络 206 16.4.2 存储 207 16.4.3 日志 207 16.4.4 监控 209 16.4.5 配置中心 211 16.4.6 安全管理 212 16.4.7 管理门户 213 16.4.8 微服务网关 214 16.4.9 DevOps 215 16.4.10 可视化编排及自动化部署 216 16.4.11 多租户 216 16.5 传统应用迁移注意事项 217 第17章 DevOps 219 17.1 用Docker实现DevOps的优势 219 17.2 基于Docker实现DevOps 220 17.3 基于容器的持续集成流程设计 221 17.3.1 版本管理 221 17.3.2 流水线 221 17.4 工具链 222 17.4.1 项目管理 222 17.4.2 需求管理 222 17.4.3 代码托管 222 17.4.4 持续集成 223 17.4.5 测试 223 17.4.6 自动化部署 223 第18章 微服务 224 18.1 微服务架构的优点 224 18.2 微服务架构概念模型 225 18.3 微服务网关 226 18.4 服务注册与发现 226 18.4.1 服务注册 226 18.4.2 服务发现 227 18.4.3 服务注册发现方案对比 228 18.5 进程间通信 228 18.5.1 Rest 229 18.5.2 Thrift 229 18.5.3 消息队列 229 18.6 微服务应用性能监控 229 18.6.1 开源方案 230 18.6.2 听云商业化方案 230 18.7 微服务框架 234 第19章 Spring Cloud 237 19.1 Spring Boot 237 19.1.1 为什么要使用 Spring Boot 238 19.1.2 快速入门 238 19.1.3 Spring Boot的优缺点总结 241 19.2 Spring Cloud 242 19.2.1 核心成员 243 19.2.2 Spring Cloud的优缺点分析 246 19.2.3 与Spring Boot之间的关系 247 19.3 Spring Cloud与Kubernetes融合实践 247 19.3.1 API网关 249 19.3.2 服务注册发现 250 19.3.3 客户端负载均衡 250 19.3.4 断路器 251 19.3.5 监控 252 19.3.6 配置管理 252 19.3.7 消息总线 253 19.3.8 链路跟踪 254 19.4 Spring Cloud特点总结 254 第20章 Serverless 256 20.1 Serverless发展史简介 256 20.2 Serverless的工作原理 257 20.2.1 Serverless的定义 258 20.2.2 Serverless的特点 259 20.2.3 Serverless的分类 259 20.2.4 Serverless设计的优势 260 20.2.5 Serverless设计的局限性 260 20.2.6 Serverless与相关概念间的关系 261 20.3 Serverless平台选型 261 20.4 Serverless适用场景 262 20.5 对比分析 263 第21章 Service Mesh 264 21.1 服务网格的由来 264 21.1.1 分布式架构对服务网络的要求 265 21.1.2 向Service Mesh演进 267 21.1.3 Service Mesh的定义 268 21.2 Linkerd 270 21.3 Istio 272 21.3.1 Istio架构 273 21.3.2 设计目标 275 21.3.3 流量管理 276 21.3.4 Pilot 276 21.3.5 请求路由 277 21.3.6 发现和负载均衡 278 21.3.7 处理故障 279 21.3.8 故障注入 280 21.3.9 规则配置 280 21.4 Service Mesh发展展望 283 |