作者简介 吉吉·塞凡(Gigi Sayfan)是Helix的软件架构师,Helix是一家生物信息学和基因组学的创业公司。他已有20多年的软件开发经验,涉及即时通信、变形、芯片制造过程控制、游戏控制台嵌入式多媒体应用、脑启发机器学习、定制浏览器开发、3D分布式游戏平台的Web服务以及物联网传感器和虚拟现实等多个领域。 他使用多种编程语言在多种操作系统中编写代码,编程语言诸如Go、Python、C、C++、C#、Java、Delphi、JavaScript,甚至Cobol和PowerBuilder;操作系统包括Windows (3.11~7)、Linux、macOS、嵌入式Lynx;另外,还有Sony PlayStation游戏机等。他的技术专长包括数据库、底层网络、分布式系统、非正统的用户界面和一般软件开发生命周期。 目录 第1章 理解Kubernetes架构 1.1 理解容器编排 1.1.1 物理机、虚拟机和容器 1.1.2 云端容器 1.1.3 服务器运行模式 1.2 Kubernetes的相关概念 1.2.1 集群 1.2.2 节点 1.2.3 主节点 1.2.4 Pod 1.2.5 标签 1.2.6 注解 1.2.7 标签选择器 1.2.8 副本控制器和副本集 1.2.9 服务 1.2.10 存储卷 1.2.11 有状态服务集 1.2.12 密钥对象 1.2.13 名称 1.2.14 命名空间 1.3 深入了解Kubernetes架构 1.4 Kubernetes API 1.4.1 Kubernetes API 1.4.2 自动伸缩 API 1.5 Kubernetes组件 1.5.1 主组件 1.5.2 节点组件 1.6 Kubernetes运行时 1.6.1 运行时接口 1.6.2 Docker 1.6.3 Rkt 1.6.4 Hyper Container 1.7 持续集成与部署 1.7.1 CI/CD流水线 1.7.2 为Kubernetes设计CI/CD流水线 1.8 总结 第2章 创建Kubernetes集群 2.1 用Minikube快速创建单节点集群 2.1.1 准备工作 2.1.2 创建集群 2.1.3 故障排除 2.1.4 检查集群 2.1.5 部署服务 2.1.6 用仪表板检查集群 2.2 用Kubeadm创建多节点集群 2.2.1 准备工作 2.2.2 组建Vagrant虚拟机集群 2.2.3 安装所需软件 2.2.4 创建集群 2.2.5 建立Pod网络 2.2.6 添加工作节点 2.3 在GCP、AWS和Azure云端创建集群 2.3.1 云提供商接口 2.3.2 GCP 2.3.3 AWS 2.3.4 Azure 2.4 从头开始创建裸金属集群 2.4.1 裸金属用例 2.4.2 什么时候应该考虑创建裸金属集群 2.5 进程 2.6 使用虚拟私有云基础设施 2.7 总结 第3章 监控、日志记录和故障排除 3.1 用Heapster监控Kubernetes 3.2 InfluxDB后端 3.2.1 存储模式 3.2.2 Grafana可视化 3.3 仪表板的性能分析 3.3.1 顶视图 3.3.2 添加中央日志 3.4 检测节点问题 3.4.1 节点问题检测器 3.4.2 DaemonSet 3.4.3 节点问题检测DaemonSet 3.5 故障排除方案 3.6 设计健壮的系统 3.6.1 硬件故障 3.6.2 配额、份额和限制 3.6.3 Bad Configuration 3.6.4 成本和性能 3.7 总结 第4章 高可用性和可靠性 4.1 高可用性概念 4.1.1 冗余 4.1.2 热交换 4.1.3 领导选举 4.1.4 智能负载均衡 4.1.5 幂等 4.1.6 自愈 4.2 高可用性最佳实践 4.2.1 创建高可用性集群 4.2.2 确保节点可靠 4.2.3 保护集群状态 4.2.4 保护数据 4.2.5 运行冗余API服务器 4.2.6 用Kubernetes运行领导选举 4.2.7 使预演环境高度可用 4.2.8 测试高可用性 4.3 集群在线升级 4.3.1 滚动升级 4.3.2 蓝绿升级 4.3.3 管理数据契约变更 4.3.4 数据迁移 4.3.5 检测过期API 4.4 大型集群的性能、成本和设计权衡 4.4.1 可用性要求 4.4.2 尽力而为 4.4.3 维护窗口 4.4.4 快速恢复 4.4.5 零停机时间 4.4.6 性能和数据的一致性 4.5 总结 第5章 配置Kubernetes安全、限制和账户 5.1 理解Kubernetes安全挑战 5.1.1 节点挑战 5.1.2 网络挑战 5.1.3 镜像挑战 5.1.4 配置和部署挑战 5.1.5 Pod和容器挑战 5.1.6 组织、文化和过程挑战 5.2 加固Kubernetes 5.2.1 理解Kubernetes的服务账户 5.2.2 访问API服务器 5.2.3 保护Pod 5.2.4 管理网络策略 5.2.5 使用密钥对象 5.3 运行多用户集群 5.3.1 多用户集群的案例 5.3.2 安全多租户使用命名空间 5.3.3 避免命名空间陷阱 5.4 总结 第6章 使用关键Kubernetes资源 6.1 设计Hue平台 6.1.1 定义Hue的范围 6.1.2 规划工作流 6.2 利用Kubernetes构建Hue平台 6.2.1 有效使用kubectl 6.2.2 理解kubectl资源配置文件 6.2.3 在Pod中部署长时间运行的微服务 6.3 内外部服务分离 6.3.1 部署内部服务 6.3.2 创建Hue-reminders服务 6.3.3 从外部公开服务 6.4 使用命名空间限制访问 6.5 启动Job 6.5.1 并行运行作业 6.5.2 清理已完成的作业 6.5.3 调度计划作业 6.6 kubectl获得Pod 6.7 混合非集群组件 6.7.1 集群网络外部组件 6.7.2 集群网络内部组件 6.7.3 用Kubernetes管理Hue平台 6.7.4 使用就绪探针管理依赖 6.8 为有序启动Pod采用初始容器 6.9 用Kubernetes进化Hue平台 6.9.1 Hue在企业中的运用 6.9.2 用Hue推进科学 6.9.3 用Hue实施教育 6.10 总结 第7章 管理Kub 内容推荐 本书通过理论与实践相结合,全方位地介绍Kubernetes这一容器编排的理想工具。本书共14章,涉及的主题包括理解Kubernetes架构,创建Kubernetes集群,监控、日志记录和故障排除,高可用性和可靠性,配置Kubernetes安全、限制和账户,使用关键Kubernetes资源,管理Kubernetes存储,使用Kubernetes运行有状态应用程序,滚动更新、可伸缩性和配额,高级Kubernetes网络,在云平台和集群联邦中运行Kubernetes,自定义Kubernetes API和插件,操作Kubernetes软件包管理器以及Kubernetes的未来。本书综合考虑不同环境和用例,使读者了解如何创建大型系统并将其部署在Kubernetes上。在各章节主题中,读者提供了丰富的实践案例分析,娓娓道来,引人入胜。 本书可以作为Kubernetes的实践参考手册,聚焦于设计和管理Kubernetes集群,为开发人员、运维工程师详细介绍了Kubernetes所提供的功能和服务。 |