1.针对Kubernetes 1.10技术内容行写作,帮助读者掌握在各种云平台上设计和部署大型集群的技能。 2.案例比较丰富,并附带基础练习题供读者加深对知识的理解; Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的源系统。如果您运行多个容器,或者希望对容器行自动化管理,那么Kubernetes是必需的。 本书聚焦于Kubernetes集群设计和管理,列举了在生产中使用容器编排时常见的问题,解释了网络配置的选项,并且提供了对各种Kubernetes网络插件行设置、操作和故障排除的指导原则。 本书介绍了如何在Kubernetes上运行复杂的有状态微服务,包括水平Pod自动伸缩、滚动更新、资源配额和持久存储后端等高级功能,以及如何自动化和维护工作流中的自定义资源发与利用。 另外,本书还概述了Kubernetes设计中的指导原则,展示了安全性、高可用性和集群联邦领域中的*实践。 您将学到以下内容: 为程序运行构建一个健壮的Kubernetes集群 了解Kubernetes在GCE、AWS、Azure和裸金属上运行的优 查看Kubernetes的身份验证模块和集群联邦的选项 对Kubernetes集群行监控和故障排除并运行高可用Kubernetes 创建和配置自定义Kubernetes资源,并在自动化工作流中使用第三方资源 了解如何在容器环境中运行复杂的有状态应用程序 将应用程序作为标准包交付
售 价:¥
纸质售价:¥70.30购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版权
版权声明
内容提要
关于作者
关于审稿人
名词说明
翻译说明
前言
资源与支持
第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.边车模式
2.外交官模式
3.适配器模式
4.多节点模式
1.4 Kubernetes API
1.4.1 Kubernetes API
1.4.2 自动伸缩 API
批处理API
1.5 Kubernetes组件
1.5.1 主组件
1.API服务器
2.etcd
3.控制器管理器
4.调度器
5.DNS
1.5.2 节点组件
1.代理
2.Kubelet
1.6 Kubernetes运行时
1.6.1 运行时接口
1.6.2 Docker
1.6.3 Rkt
1.App容器
2.Rkrnetes
3.Rkt是否已为生产使用做好准备
1.6.4 Hyper Container
Hypernetes
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 安装所需软件
1.主机文件
2.vars.yml文件
3.playbook.yml文件
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
cAdvisor
3.2 InfluxDB后端
3.2.1 存储模式
1.CPU
2.文件系统
3.内存
4.网络
5.运行时间
3.2.2 Grafana可视化
3.3 仪表板的性能分析
3.3.1 顶视图
1.管理员视图
2.工作负载
3.服务和发现
3.3.2 添加中央日志
1.设计中央日志
2.Fluentd
3.Elasticsearch
4.Kibana
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 成本和性能
1.云管理成本
2.裸金属的成本管理
3.混合集群的管理成本
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 保护集群状态
1.etcd集群
2.静态发现
3.etcd发现
4.DNS发现
5.etcd.yaml文件
6.验证etcd集群
7.etcd v2与etcd v3
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的服务账户
Kubernetes如何管理服务账户
5.2.2 访问API服务器
1.认证用户
2.授权请求
3.使用准入控制插件
5.2.3 保护Pod
1.使用私有镜像库
2.ImagePullSecrets
3.指定安全上下文
4.用AppArmor保护集群
5.Pod安全策略
5.2.4 管理网络策略
1.选择支持的网络解决方案
2.定义网络策略
5.2.5 使用密钥对象
1.把密钥对象存储在Kubernetes
2.创建密钥对象
3.解码密钥对象
4.在容器中使用密钥对象
5.3 运行多用户集群
5.3.1 多用户集群的案例
5.3.2 安全多租户使用命名空间
5.3.3 避免命名空间陷阱
5.4 总结
第6章 使用关键Kubernetes资源
6.1 设计Hue平台
6.1.1 定义Hue的范围
1.Hue组件
2.Hue微服务
6.1.2 规划工作流
1.自动工作流
2.人工工作流
3.感知预算工作流
6.2 利用Kubernetes构建Hue平台
6.2.1 有效使用kubectl
6.2.2 理解kubectl资源配置文件
1.apiVersion
2.kind
3.metadata
4.spec
5.Container spec
6.2.3 在Pod中部署长时间运行的微服务
1.创建Pod
2.用标签装饰Pod
3.用Deployment来部署长时间运行的进程
4.更新部署
6.3 内外部服务分离
6.3.1 部署内部服务
6.3.2 创建Hue-reminders服务
6.3.3 从外部公开服务
入口(Ingress)
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采用初始容器
与DaemonSet Pod共享
6.9 用Kubernetes进化Hue平台
6.9.1 Hue在企业中的运用
6.9.2 用Hue推进科学
6.9.3 用Hue实施教育
6.10 总结
第7章 管理Kubernetes存储
7.1 持久存储卷指导
7.1.1 存储卷
1.用emptyDir进行Pod内通信
2.用主机路径进行节点内通信
3.提供持久存储卷
7.1.2 创建持久存储卷
1.容量
2.访问模式
3.回收策略
4.存储卷类型
7.1.3 持续存储卷声明
7.1.4 按使用存储卷挂载声明
7.1.5 存储类
默认存储类
7.1.6 从端到端演示持久存储卷
7.2 公共存储卷类型——GCE、AWS和Azure
7.2.1 AWS弹性块存储(EBS)
7.2.2 AWS弹性文件系统(EFS)
7.2.3 GCE持久化磁盘
7.2.4 Azure数据盘
7.2.5 Azure文件存储
7.3 Kubernetes中的GlusterFS和Ceph存储卷
7.3.1 使用GlusterFS
1.创建端点
2.添加GlusterFS Kubernetes服务
3.创建Pod
7.3.2 使用Ceph
1.使用RBD连接到Ceph
2.使用CephFS连接到Ceph
7.4 Flocker作为集群容器数据存储卷管理器
7.5 将企业存储集成到Kubernetes
Torus——块上的新成员
7.6 总结
第8章 使用Kubernetes运行有状态的应用程序
8.1 Kubernetes中的有状态与无状态应用
8.1.1 理解分布式数据密集型应用的本质
8.1.2 为什么在Kubernetes中管理状态
8.1.3 为什么在Kubernetes以外管理状态
8.2 共享环境变量与DNS记录
8.2.1 通过DNS访问外部数据存储
8.2.2 通过环境变量访问外部数据存储
1.创建配置映射表(ConfigMap)
2.使用配置映射表作为环境变量
8.2.3 使用冗余内存状态
8.2.4 使用DaemonSet进行冗余持久存储
8.2.5 应用持久存储卷声明
8.2.6 利用有状态服务集
1.何时使用状态服务集
2.有状态服务集的组件
8.3 在Kubernetes运行Cassandra集群
8.3.1 Cassandra快速入门
8.3.2 Cassandra Docker镜像
探索run.sh脚本
8.3.3 连接Kubernetes和Cassandra
1.深入Cassandra配置
2.自定义种子提供器
8.3.4 创建Cassandra无源服务
8.3.5 使用有状态服务集创建Cassandra集群
解析有状态服务集配置文件
8.3.6 使用副本控制器分布Cassandra
1.解析副本控制器配置文件
2.将Pod分配给节点
8.3.7 利用DaemonSet分布Cassandra
8.4 总结
第9章 滚动更新、可伸缩性和配额
9.1 水平Pod自动伸缩
9.1.1 声明水平Pod自动伸缩器
9.1.2 自定义度量
9.1.3 使用Kubectl自动伸缩
9.2 用自动伸缩进行滚动更新
9.3 用限制和配额处理稀缺资源
9.3.1 启用资源配额
9.3.2 资源配额类型
1.计算资源配额
2.存储资源配额
3.对象计数配额
9.3.3 配额范围
9.3.4 请求与限制
9.3.5 使用配额
1.使用特定命名空间的context
2.创建配额
3.使用默认计算配额的限制范围
9.4 选择与管理集群性能
9.4.1 选择节点类型
9.4.2 选择存储解决方案
9.4.3 交易成本与响应时间
9.4.4 有效使用多节点配置
9.4.5 利用弹性云资源
1.自动伸缩实例
2.注意云配额
3.精心管理区域
9.4.6 考虑Hyper.sh
9.5 挑战Kubernetes性能极限
9.5.1 提高Kubernetes的性能和可扩展性
1.在API服务器中读取缓存
2.Pod生命周期事件生成器
3.用协议缓冲区序列化API对象
9.5.2 测量Kubernetes的性能和可伸缩性
1.Kubernetes SLO
2.测量API响应性
3.测量端到端Pod启动时间
9.5.3 按规模测试Kubernetes
1.Kubemark工具简介
2.建立Kubemark集群
3.Kubemark集群与真实世界集群的比较
9.6 总结
第10章 高级Kubernetes网络
10.1 理解Kubernetes网络模型
10.1.1 容器内通信(容器-容器)
10.1.2 Pod间通信(Pod-Pod)
10.1.3 Pod-服务通信
10.1.4 外部访问
10.1.5 Kubernetes网络与Docker网络
10.1.6 查找与发现
1.自注册
2.服务和端点
3.带队列的松耦合连通性
4.用数据存储进行松散耦合连接
5.Kubernetes入口
10.1.7 Kubernetes网络插件
1.基本Linux网络
2.IP地址和端口
3.网络命名空间
4.虚拟以太网设备
5.桥接
6.路由
7.最大传输单元
8.Pod网络
9.Kubenet
10.容器网络接口
10.2 Kubernetes网络解决方案
10.2.1 裸金属集群桥接
10.2.2 Contiv
10.2.3 Open vSwitch
10.2.4 Nuage网络VCS
10.2.5 Canal
10.2.6 Flannel
10.2.7 Calico工程
10.2.8 Romana
10.2.9 Weave Net
10.3 有效使用网络策略
理解Kubernetes网络策略设计
网络策略和CNI插件
10.4 负载均衡选项
10.4.1 外部负载均衡器
1.配置外部负载均衡器
2.发现负载均衡器的IP地址
3.识别客户端IP地址
4.为客户端IP地址保存提供负载均衡器注解
5.理解外部负载均衡的潜力
10.4.2 服务负载均衡器
10.4.3 入口
1.HAProxy
2.利用NodePort
3.使用HAProxy自定义负载均衡提供器
4.在Kubernetes集群中运行HAProxy
5.Keepalived VIP
10.5 编写自己的CNI插件
loopback插件
1.基于CNI插件框架的构建
2.bridge插件
10.6 总结
第11章 在云平台和集群联邦中运行Kubernetes
11.1 理解集群联邦
11.1.1 集群联邦的重要用例
1.容量过剩
2.敏感性工作负载
3.避免提供商锁定
4.地理分布的高可用性
11.1.2 联邦控制平面
1.联邦API服务器
2.联邦控制管理器
11.1.3 联邦资源
1.联邦组态图
2.联邦起始点
3.联邦部署
4.联邦事件
5.联邦入口
6.联邦命名空间
7.联邦副本集
8.联邦密钥对象
11.1.4 高难度部分
1.联邦工作单位
2.位置亲和性
3.交叉集群调度
4.联邦数据访问
5.联邦自动伸缩
11.2 管理Kubernetes集群联邦
11.3 从底层建立集群联邦
11.3.1 初始设置
11.3.2 使用官方hyperkube镜像
11.3.3 运行联邦控制平面
11.3.4 用联邦注册Kubernetes集群
11.3.5 更新KubeDNS
11.3.6 关闭联邦
11.3.7 用Kubefed建立集群联邦
1.获得Kubefed
2.选择主机集群
3.部署联邦控制平面
4.向联邦添加集群
5.资源的级联删除
6.跨多个集群的负载均衡
7.跨多个集群故障
8.联邦服务发现
9.联邦迁移
11.4 运行联邦工作负载
11.4.1 创建联邦服务
11.4.2 添加后端Pod
11.4.3 验证公共DNS记录
11.4.4 发现联邦服务
DNS展开
11.4.5 后端Pod和整个集群的故障处理
11.4.6 故障排除
无法连接到联邦API服务器
11.5 总结
第12章 自定义Kubernetes API和插件
12.1 使用Kubernetes API
12.1.1 理解OpenAPI
12.1.2 设置代理
12.1.3 直接探索Kubernetes API
1.使用Postman探索Kubernetes API
2.用httpie和jq过滤输出
12.1.4 通过Kubernetes API创建Pod
12.1.5 通过Python客户端访问Kubernetes API
1.剖析CoreV1API组
2.列出对象
3.创建对象
4.监视对象
5.以编程方式调用Kubectl
6.使用Python子进程运行Kubectl
12.2 扩展Kubernetes API
12.2.1 理解第三方资源的结构
12.2.2 开发第三方资源
12.2.3 整合第三方资源
12.3 编写Kubernetes插件
编写自定义调度程序插件
1.了解Kubernetes调度器的设计
2.打包调度器
3.部署自定义调度器
4.在集群上运行另一个自定义调度器
5.分配自定义调度器到节点
6.验证Pod使用的是自定义调度器
12.4 编写授权插件
12.4.1 编写准入控制接口
1.实现准入控制插件
2.注册一个准入控制插件
3.链接自定义准入控制插件
12.4.2 编写自定义度量插件
1.配置Pod的自定义度量
2.指定目标度量值
12.4.3 编写卷插件
1.实现卷插件
2.注册卷插件
3.链接卷插件
12.5 总结
第13章 操作Kubernetes软件包管理器
13.1 理解Helm
13.1.1 Helm的动机
13.1.2 Helm架构
13.1.3 Helm组件
1.Tiller服务器
2.Helm客户端
13.1.4 Helm与Helm-Classic
13.2.1 安装Helm
1.安装Helm客户端
2.安装Tiller服务器
13.2.2 寻找图表
13.2.3 安装包
1.检查安装状态
2.定制图表
3.额外的安装选项
4.升级和回滚版本
5.删除发布版本
13.2.4 使用安装包库
13.2.5 使用Helm管理图表
充分利用启动器包
13.3 创建自己的图表
13.3.1 Chart.yaml文件
2.appVersion字段
3.弃用图表
13.3.2 图表元数据文件
13.3.3 管理图表依赖
1.使用需求管理依赖关系
2.利用requirements.yaml中的特殊字段
13.3.4 使用模板和值
1.编写模板文件
2.使用管道和功能
3.嵌入预定义值
4.从文件中反馈值
5.作用域、依赖关系和值
13.4 总结
第14章 Kubernetes的未来
14.1 未来发展道路
14.1.1 Kubernetes的发行版和里程碑
14.1.2 Kubernetes的特别兴趣小组和工作组
14.2 面临的挑战
14.2.1 捆绑价值
14.2.2 Docker Swarm
14.2.3 Mesos/Mesosphere
14.2.4 云平台
14.2.5 AWS
14.2.6 Azure
14.2.7 阿里云
14.3 Kubernetes势头
14.3.1 社区
14.3.2 GitHub
14.3.3 会议
14.3.4 思维共享
14.3.5 生态系统
14.3.6 公有云提供商
1.OpenShift
2.OpenStack
3.其他选手
14.4 教育和培训
14.5 动态插件
14.6 总结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜