| 作者 |
| 邱宝 冯亮亮 陈耿 |
| 丛书名 |
| 云计算与虚拟化技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782012119491 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------公有云容器化指南:腾讯云TKE实战与应用--------------------------- 内容简介 这是一本面向公有云容器产品学习者和使用者的实战指南。由腾讯云资深云计算技术专家撰写,以腾讯云TKE容器产品为例,在普及开源容器知识的基础上,结合多种标准方法和丰富案例,全方位地讲解了上云容器化的方法和技巧。 本书一共7章,每一章都是作者云上容器化落地的经验总结。 第1~2章有针对性的讲解了Docker和Kubernetes等开源的容器技术的核心知识,帮助读者夯实基础; 第3~7章以腾讯云的容器产品TKE为例,分两条主线:明线详细讲解了TKE的产品架构、产品功能、标准化操作、运维和企业级应用案例;暗线系统总结了上云容器化的方法和技巧。 这本书将帮助读者了解开源容器知识以及企业级公有云容器化操作,让读者逐步走进高效、低成本的云上容器世界,快速迈向云原生。 ---------------------------开源容器云OpenShift:构建基于Kubernetes的企业应用云平台--------------------------- 本书介绍的OpenShift是基于Docker和Kubernetes构建的开源的容器云,是为帮助企业、组织搭建及管理基于容器的应用平台产生的解决方案。通过OpenShift,企业可以快速地搭建稳定、安全、高效的容器应用平台。本书深入浅出地介绍如何搭建OpenShift容器云平台,并在这个平台上进行应用的开发和部署。探讨在OpenShift上如何满足软件研发常见的需求,如持续集成和交付,微服务化、数据持久化等。同时,探讨OpenShift的软件定义网络、高可用、配额控制等与运维息息相关的话题。 |
| 目录 |
---------------------------公有云容器化指南:腾讯云TKE实战与应用--------------------------- 前言 第1章 Docker容器基础1 1.1 什么是容器技术1 1.1.1 什么是容器1 1.1.2 容器技术的特点3 1.1.3 容器的标准化3 1.1.4 容器的主要应用场景4 1.2 什么是Docker5 1.2.1 Docker简介5 1.2.2 Docker的组成架构7 1.3 安装Docker8 1.3.1 安装的前提条件8 1.3.2 在CentOS 7.3上安装Docker9 1.3.3 在Windows 10 Pro上安装Docker11 1.4 Docker的基本用法11 1.4.1 用容器启动一个Nginx/MySQL/Redis服务12 1.4.2 如何进入容器16 1.4.3 如何停止、删除容器17 1.5 Docker镜像的基本操作18 1.5.1 获取镜像18 1.5.2 列出镜像20 1.5.3 导出/导入镜像22 1.5.4 删除本地镜像23 1.5.5 使用commit构建镜像24 1.6 用Dockerfile专业化定制镜像26 1.6.1 什么是Dockerfile26 1.6.2 常用的Dockerfile指令和语法27 1.7 镜像仓库35 1.7.1 共有仓库35 1.7.2 私有仓库37 1.8 存储基本配置39 1.8.1 什么是数据卷39 1.8.2 创建、挂载数据卷40 1.8.3 共享、同步数据卷42 1.8.4 备份、还原数据卷43 1.9 网络基本配置45 1.9.1 网络模型45 1.9.2 Docker原生的网络驱动47 1.9.3 Docker网络操作的基本命令48 1.10 Docker API的基本介绍和使用方式53 1.10.1 什么是API53 1.10.2 Docker API的种类54 1.10.3 API使用前的准备55 1.10.4 操作Docker API55 第2章 Kubernetes基础58 2.1 什么是容器云58 2.1.1 当前云计算的发展58 2.1.2 什么是IaaS、PaaS和SaaS59 2.1.3 容器云介绍61 2.2 什么是Kubernetes62 2.2.1 Kubernetes的基本介绍62 2.2.2 Kubernetes的技术架构65 2.2.3 Kubernetes解决了什么69 2.3 Kubernetes的基础知识70 2.4 深入理解Pod73 2.4.1 什么是Pod73 2.4.2 Pod的内部机制74 2.4.3 Pod的资源使用机制79 2.4.4 Pod的基本操作命令80 2.5 如何编写Pod YAML文件81 2.5.1 什么是YAML文件81 2.5.2 Pod YAML的参数定义82 2.6 如何理解编排85 2.6.1 通俗地理解编排85 2.6.2 Kubernetes与编排86 2.7 五种Kubernetes控制器88 2.7.1 为什么要有控制器88 2.7.2 Kubernetes有哪些控制器89 2.8 Kubernetes的网络91 2.8.1 虚拟化网络基础91 2.8.2 Docker的网络92 2.8.3 Kubernetes网络详解92 2.9 Kubernetes的存储98 2.9.1 存储虚拟化介绍98 2.9.2 Kubernetes存储机制设计100 2.9.3 Kubernetes CSI106 2.10 Kubernetes的安全机制108 2.10.1 节点侧安全108 2.10.2 Docker侧安全109 2.10.3 Kubernetes侧安全110 2.10.4 Kubernetes安全策略113 2.10.5 更安全的Kata Containers116 2.10.6 容器云平台安全的未来117 2.11 Kubernetes监控117 2.11.1 Pod的实时状态数据117 2.11.2 Pod的业务监控实现119 2.12 Kubernetes单点搭建121 2.12.1 安装环境121 2.12.2 初始化操作121 2.12.3 master节点初始化操作123 2.12.4 加入节点124 2.12.5 master节点安装进度124 2.12.6 安装flannel网络插件125 2.12.7 安装calico网络插件127 2.12.8 搭建总结129 2.13 Kubernetes高可用搭建130 2.13.1 安装环境130 2.13.2 初始化操作131 2.13.3 master节点初始化操作132 2.13.4 加入其他master节点133 2.13.5 加入节点134 2.13.6 master节点安装进度134 2.13.7 master节点安装flannel网络插件135 2.13.8 master节点安装calico网络插件138 2.13.9 搭建总结140 2.14 Kubernetes仪表板可视化141 2.14.1 私钥、证书签名和secret生成141 2.14.2 部署仪表板142 2.14.3 登录仪表板146 2.15 Kubernetes的API与源码147 2.15.1 Kubernetes的版本环境147 2.15.2 认证方式147 2.15.3 访问测试148 2.15.4 API示例149 2.15.5 代码解析155 2.15.6 主要功能介绍158 第3章 腾讯云TKE产品介绍184 3.1 产品介绍184 3.1.1 腾讯云TKE名词解释185 3.1.2 Docker镜像名词解释186 3.1.3 快速创建容器应用流程187 3.1.4 基于腾讯云TKE的业务交付187 3.2 腾讯云TKE产品架构188 3.3 腾讯云TKE产品功能189 3.3.1 集群管理189 3.3.2 应用管理190 3.3.3 服务管理190 3.3.4 配置项管理191 3.3.5 镜像管理191 3.4 腾讯云TKE产品优势192 3.4.1 腾讯云TKE与自建容器服务对比192 3.4.2 周边资源对比193 3.5 腾讯云TKE网络193 3.5.1 什么是私有网络193 3.5.2 GlobalRouter194 3.5.3 VPC-CNI197 3.6 腾讯云TKE与自建Kubernetes集群201 3.6.1 集群安装和升级201 3.6.2 集群网络201 3.6.3 存储202 3.6.4 负载均衡器202 3.6.5 镜像仓库202 3.6.6 集群运维及技术支持202 3.6.7 资金及人力成本203 第4章 腾讯云TKE标准化操作204 4.1 容器应用日志输出标准204 4.2 容器日志采集205 4.2.1 容器日志分类205 4.2.2 容器日志采集类型206 4.3 制作基础镜像207 4.4 Dockerfile编写规范212 4.5 容器业务类型214 4.5.1 腾讯云TKE集群类型214 4.5.2 节点类型215 4.5.3 工作负载选型215 4.5.4 业务StorageClass类型216 4.5.5 JVM内存限制217 4.5.6 业务选型总结217 4.6 腾讯云TKE平台使用规范218 第5章 腾讯云TKE应用案例219 5.1 腾讯云Docker镜像仓库授权连接GitLab219 5.1.1 镜像仓库开通219 5.1.2 源代码授权221 5.2 无状态服务部署WordPress应用224 5.2.1 Nginx和PHP基础镜像上传至腾讯云TKE镜像仓库224 5.2.2 验证镜像推送成功226 5.2.3 将Dockerfile上传至GitLab226 5.2.4 基于Dockerfile生成业务镜像228 5.2.5 构建镜像产生的日志说明230 5.2.6 业务镜像生成验证231 5.2.7 创建MySQL安全组232 5.2.8 创建MySQL数据库233 5.2.9 创建WordPress数据库237 5.2.10 部署WordPress容器网站服务239 5.3 无状态服务部署Java应用249 5.4 有状态服务部署MySQL应用252 5.5 Job任务型服务:Perl运算260 5.6 CronJob定时任务:echo定时应用264 5.7 DaemonSet守护任务:fluentd应用268 5.8 TKE Helm部署WordPress271 5.8.1 Helm架构272 5.8.2 开通TKE Helm272 5.8.3 Helm部署WordPress274 5.8.4 WordPress Chart部署信息275 5.8.5 访问验证277 5.9 Jenkins在TKE外网的架构及实现278 5.9.1 Jenkins持续集成278 5.9.2 Jenkins在TKE平台架构中的应用279 5.9.3 部署环境280 5.9.4 TKE集群侧配置280 5.9.5 Jenkins侧配置283 5.9.6 slave Pod构建配置292 5.9.7 构建测试296 5.9.8 自动化构建发布300 5.9.9 Jenkins批量构建配置307 5.10 部署案例之ELK308 5.11 容器日志的三种采集配置方式312 5.12 蓝绿部署328 5.13 灰度发布331 5.14 部署JMeter压测工具336 5.15 部署Prometheus监控341 5.16 部署Ingress kong网关347 5.17 部署Istio351 5.18 搭建Harbor仓库358 5.18.1 Harbor核心组件及部署环境358 5.18.2 非Harbor侧配置359 5.18.3 Harbor侧配置360 第6章 腾讯云TKE运维和排障369 6.1 容器服务高危操作369 6.2 WordPress容器化业务操作排错总结371 6.3 腾讯云TKE排障之节点与网络异常372 6.4 腾讯云TKE排障之Helm与镜像仓库375 6.5 腾讯云TKE排障之Service和Ingress异常376 6.6 腾讯云TKE排障之Pod异常382 6.7 腾讯云TKE排障之数据卷异常384 6.8 腾讯云TKE排障之控制台和监控异常384 6.9 腾讯云TKE健康检查385 6.9.1 脚本功能及使用385 6.9.2 自助健康检查387 第7章 腾讯云TKE经典实践案例390 7.1 腾讯云TKE应用跨区高可用部署方案(一)390 7.1.1 高可用部署架构390 7.1.2 使用腾讯云TKE进行高可用部署391 7.2 腾讯云TKE应用跨区高可用部署方案(二)402 7.2.1 使用Pod亲和性实现跨可用区部署403 7.2.2 部署原理分析408 7.3 腾讯自研业务上云:优化Kubernetes集群负载的技术方案探讨409 7.4 腾讯IEG游戏营销活动在腾讯云TKE中的实践415 7.5 基于腾讯云TKE的大规模强化学习实践421 7.5.1 项目挑战421 7.5.2 训练架构421 7.5.3 业务需求422 7.5.4 基于腾讯云TKE的大规模分布式强化学习解决方案422 7.5.5 创新性424 7.5.6 使用腾讯云TKE带来的价值424 7.5.7 遇到的问题426 7.6 云智天枢AI中台在腾讯云TKE中的实践427 7.6.1 云智天枢平台架构427 7.6.2 各核心窗口的架构设计429 7.7 某视频公司基于腾讯云TKE的微服务实践434 7.7.1 Spring Cloud微服务架构介绍434 7.7.2 Spring Cloud与Kubernetes的优势互补436 7.7.3 业务部署模式438 7.7.4 未来规划439 ---------------------------开源容器云OpenShift:构建基于Kubernetes的企业应用云平台--------------------------- 序言 前言 致谢 基础篇 第1章 开源容器云概述 2 1.1 容器时代的IT 2 1.2 开源容器云 3 1.3 OpenShift 4 1.4 Docker、Kubernetes与OpenShift 6 1.4.1 容器引擎 6 1.4.2 容器编排 6 1.4.3 容器应用云 7 1.5 OpenShift社区版与企业版 8 第2章 初探OpenShift容器云 10 2.1 启动OpenShift Origin 10 2.1.1 准备主机 11 2.1.2 准备操作系统 11 2.1.3 操作系统配置 11 2.1.4 安装Docker 12 2.1.5 下载OpenShift Origin安装包 13 2.1.6 安装及启动OpenShift Origin 13 2.1.7 登录OpenShift Origin控制台 14 2.2 运行第一个容器应用 14 2.2.1 创建项目 14 2.2.2 部署Docker镜像 15 2.2.3 访问容器应用 18 2.2.4 一些疑问 19 2.3 完善OpenShift集群 19 2.3.1 命令行工具 19 2.3.2 以集群管理员登录 21 2.3.3 添加Router 22 2.3.4 添加Registry 23 2.3.5 添加Image Stream 24 2.3.6 添加Template 25 2.4 部署应用 27 2.5 本章小结 32 第3章 OpenShift架构探秘 33 3.1 架构概览 33 3.1.1 基础架构层 34 3.1.2 容器引擎层 34 3.1.3 容器编排层 34 3.1.4 PaaS服务层 35 3.1.5 界面及工具层 35 3.2 核心组件详解 35 3.2.1 Master节点 36 3.2.2 Node节点 37 3.2.3 Project与Namespace 38 3.2.4 Pod 38 3.2.5 Service 40 3.2.6 Router与Route 41 3.2.7 Persistent Storage 42 3.2.8 Registry 42 3.2.9 Source to Image 43 3.2.10 开发及管理工具集 44 3.3 核心流程详解 44 3.3.1 应用构建 44 3.3.2 应用部署 45 3.3.3 请求处理 45 3.3.4 应用更新 46 3.4 本章小结 46 第4章 OpenShift企业部署 47 4.1 部署架构 47 4.1.1 多环境单集群 47 4.1.2 多环境多集群 48 4.1.3 多个数据中心 48 4.2 高级安装模式 49 4.2.1 主机准备 50 4.2.2 安装前预配置 50 4.2.3 执行安装 53 4.2.4 安装后配置 54 4.3 离线安装 57 4.4 集群高可用 58 4.4.1 主控节点的高可用 58 4.4.2 计算节点的高可用 59 4.4.3 组件的高可用 59 4.4.4 应用的高可用 60 4.5 本章小结 60 开发篇 第5章 容器应用的构建与部署自动化 62 5.1 一个Java应用的容器化之旅 62 5.2 OpenShift构建与部署自动化 64 5.2.1 快速构建部署一个应用 65 5.2.2 镜像构建:Build Config与Build 69 5.2.3 镜像部署:Deployment Config与Deploy 72 5.2.4 服务连通:Service与Route 76 5.3 弹性伸缩 77 5.3.1 Replication Controller 77 5.3.2 扩展容器实例 77 5.3.3 状态自恢复 78 5.4 应用更新发布 78 5.4.1 触发更新构建 78 5.4.2 更新部署 80 5.5 本章小结 80 第6章 持续集成与部署 81 6.1 部署Jenkins服务 81 6.2 触发项目构建 83 6.2.1 创建Jenkins项目 84 6.2.2 添加构建步骤 84 6.2.3 触发构建 85 6.3 构建部署流水线 85 6.3.1 创建开发测试环境项目 85 6.3.2 创建集成测试环境项目 86 6.3.3 创建生产环境项目 87 6.3.4 配置访问权限 87 6.3.5 创建集成测试环境部署配置 87 6.3.6 创建生产环境部署配置 88 6.3.7 创建DEV构建配置 88 6.3.8 创建SIT构建配置 89 6.3.9 创建RELEASE构建配置 90 6.3.10 配置流水线 92 6.4 流水线可视化 93 6.4.1 安装流水线插件 93 6.4.2 创建流水线视图 93 6.5 OpenShift流水线 95 6.5.1 部署Jenkins实例 95 6.5.2 部署示例应用 95 6.5.3 查看流水线定义 96 6.5.4 触发流水线构建 97 6.5.5 修改流水线配置 99 6.6 本章小结 100 第7章 应用的微服务化 101 7.1 容器与微服务 101 7.1.1 微服务概述 101 7.1.2 微服务与容器 101 7.2 微服务容器化 102 7.2.1 基于现有的构建系统容器化微服务 103 7.2.2 基于S2I容器化微服务 103 7.3 服务部署 105 7.3.1 单个微服务的部署 105 7.3.2 多个微服务的部署 105 7.4 服务发现 106 7.4.1 通过Service进行服务发现 107 7.4.2 服务与链接 108 7.5 健康检查 108 7.5.1 Readniess与Liveness 108 7.5.2 健康检查类型 109 7.6 更新发布 110 7.6.1 滚动更新 110 7.6.2 发布回滚 112 7.6.3 灰度发布 112 7.7 服务治理 117 7.7.1 API网关 117 7.7.2 微服务框架 117 7.8 本章小结 118 第8章 应用数据持久化 119 8.1 无状态应用与有状态应用 119 8.1.1 非持久化的容器 119 8.1.2 容器数据持久化 120 8.2 持久化卷与持久化卷请求 120 8.3 持久化卷与储存 123 8.3.1 Host Path 124 8.3.2 NFS 124 8.3.3 GlusterFS 124 8.3.4 Ceph 125 8.3.5 OpenStack Cinder 126 8.4 存储资源定向匹配 127 8.4.1 创建持久化卷 127 8.4.2 标记标签 127 8.4.3 创建持久化卷请求 127 8.4.4 请求与资源定向匹配 128 8.4.5 标签选择器 128 8.5 实战:持久化的镜像仓库 129 8.5.1 检查挂载点 129 8.5.2 备份数据 130 8.5.3 创建存储 130 8.5.4 创建持久化卷 131 8.5.5 创建持久化卷请求 131 8.5.6 关联持久化卷请求 132 8.6 本章小结 133 第9章 容器云上的应用开发 134 9.1 开发工具集成 134 9.1.1 下载开发工具 135 9.1.2 下载命令行客户端 135 9.1.3 安装及配置JBoss Tools插件 135 9.2 部署应用 138 9.2.1 检出应用源代码 138 9.2.2 部署应用至OpenShift 138 9.2.3 查看日志输出 141 9.2.4 访问应用服务 142 9.3 实时发布 143 9.3.1 更新部署配置 143 9.3.2 创建Server Adapter 144 9.3.3 更新应用源代码 146 9.3.4 查看更新后的应用 146 9.4 远程调试 147 9.4.1 修改部署配置 148 9.4.2 转发远程端口 148 9.4.3 设置断点 148 9.4.4 启动远程调试 150 9.5 本章小结 150 运维篇 第10章 软件定义网络 154 10.1 软件定义网络与容器 154 10.1.1 Docker容器网络 154 10.1.2 Kubernetes容器网络 155 10.1.3 OpenShift容器网络 155 10.2 网络实现 156 10.2.1 节点主机子网 156 10.2.2 节点设备构成 156 10.2.3 网络结构组成 158 10.3 网络连通性 159 10.3.1 集群内容器间通信 159 10.3.2 集群内容器访问集群外服务 161 10.3.3 集群外应用访问集群内容器 161 10.4 网络隔离 161 10.4.1 配置多租户网络 162 10.4.2 测试网络隔离 162 10.4.3 连通隔离网络 163 10.5 定制OpenShift网络 163 10.6 本章小结 163 第11章 度量与日志管理 164 11.1 容器集群度量采集 164 11.2 部署容器集群度量采集 165 11.2.1 配置Service Account 166 11.2.2 配置证书 166 11.2.3 部署度量采集模板 166 11.2.4 更新集群配置 167 11.2.5 查看容器度量指标 168 11.2.6 进一步完善度量采集 168 11.3 度量接口 168 11.3.1 获取度量列表 170 11.3.2 获取度量数据 170 11.4 容器集群日志管理 171 11.5 部署集群日志管理组件 172 11.5.1 创建部署模板 172 11.5.2 配置Service Account 173 11.5.3 配置证书 173 11.5.4 部署日志组件模板 173 11.5.5 更新集群配置 174 11.5.6 查看容器日志 174 11.5.7 进一步完善日志管理 174 11.6 本章小结 175 第12章 安全与限制 176 12.1 容器安全 176 12.2 用户认证 177 12.2.1 令牌 177 12.2.2 Indentity Provider 178 12.2.3 用户与组管理 179 12.3 权限管理 180 12.3.1 权限对象 180 12.3.2 权限操作 181 12.3.3 自定义角色 184 12.4 Service Account 186 12.5 安全上下文 187 12.6 敏感信息管理 190 12.7 额度配置 192 12.7.1 计算资源额度 193 12.7.2 对象数量额度 194 12.7.3 额度对象的使用 195 12.8 资源限制 196 12.8.1 Limit Range对象 196 12.8.2 QoS 198 12.9 本章小结 199 第13章 集群运维管理 200 13.1 运维规范 200 13.1.1 规范的制定 200 13.1.2 规范的维护 201 13.1.3 规范的执行 201 13.2 节点管理 201 13.2.1 Cockpit 202 13.2.2 安装配置Cockpit 202 13.2.3 Cockpit与系统运维 203 13.2.4 Cockpit与集群运维 203 13.3 集群扩容 208 13.3.1 集群扩容途径 208 13.3.2 执行集群扩容 209 13.4 集群缩容 209 13.4.1 禁止参与调度 210 13.4.2 节点容器撤离 210 13.4.3 移除计算节点 211 13.5 混合云管理 211 13.5.1 混合云管理平台的价值 211 13.5.2 ManageIQ 212 13.6 本章小结 213 第14章 系统集成与定制 214 14.1 通过Web Hook集成 214 14.1.1 Generic Hook 215 14.1.2 GitHub Hook 216 14.2 通过命令行工具集成 216 14.2.1 调用权限 217 14.2.2 输出格式 217 14.2.3 调试输出 217 14.3 S2I镜像定制 218 14.3.1 准备环境 218 14.3.2 编写Dockerfile 220 14.3.3 编辑S2I脚本 221 14.3.4 执行镜像构建 222 14.3.5 导入镜像 222 14.4 部署模板定制 224 14.4.1 元信息 225 14.4.2 对象列表 226 14.4.3 模板参数 227 14.4.4 定义模板 229 14.4.5 创建模板 231 14.5 系统组件定制 231 14.5.1 组件定制 231 14.5.2 插件定制 231 14.6 RESTful编程接口 232 14.6.1 接口类型 233 14.6.2 身份验证 233 14.6.3 二次开发实例 234 14.7 系统源代码定制 237 14.8 本章小结 237 附录A 排错指南 238 后记 252 |