• 封面
  • 版权信息
  • 内容简介
  • 推荐序
  • 前言
  • 第1章 Kubernetes入门
  • 1.1 了解Kubernetes
  • 1.2 为什么要用Kubernetes
  • 1.3 从一个简单的例子开始
  • 1.3.1 环境准备
  • 1.3.2 启动MySQL服务
  • 1.3.3 启动Tomcat应用
  • 1.3.4 通过浏览器访问网页
  • 1.4 Kubernetes的基本概念和术语
  • 1.4.1 资源对象概述
  • 1.4.2 集群类
  • 1.4.3 应用类
  • 1.4.4 存储类
  • 1.4.5 安全类
  • 第2章 Kubernetes安装配置指南
  • 2.1 系统要求
  • 2.2 使用kubeadm工具快速安装Kubernetes集群
  • 2.2.1 安装kubeadm
  • 2.2.2 修改kubeadm的默认配置
  • 2.2.3 下载Kubernetes的相关镜像
  • 2.2.4 运行kubeadm init命令安装Master节点
  • 2.2.5 将新的Node加入集群
  • 2.2.6 安装CNI网络插件
  • 2.2.7 验证Kubernetes集群是否工作正常
  • 2.3 以二进制文件方式安装Kubernetes安全高可用集群
  • 2.3.1 Master高可用部署架构
  • 2.3.2 创建CA根证书
  • 2.3.3 部署安全的etcd高可用集群
  • 2.3.4 部署安全的Kubernetes Master高可用集群
  • 2.3.5 部署Node的服务
  • 2.3.6 kube-apiserver基于token的认证机制
  • 2.4 使用私有镜像库的相关配置
  • 2.5 Kubernetes的版本升级
  • 2.5.1 二进制文件升级
  • 2.5.2 使用kubeadm进行集群升级
  • 2.6 CRI(容器运行时接口)详解
  • 2.6.1 CRI概述
  • 2.6.2 CRI的主要组件
  • 2.6.3 Pod和容器的生命周期管理
  • 2.6.4 面向容器级别的设计思路
  • 2.6.5 尝试使用新的Docker-CRI来创建容器
  • 2.6.6 CRI的进展
  • 2.7 kubectl命令行工具用法详解
  • 2.7.1 kubectl用法概述
  • 2.7.2 kubectl子命令详解
  • 2.7.3 kubectl可操作的资源对象详解
  • 2.7.4 kubectl的公共参数说明
  • 2.7.5 kubectl格式化输出
  • 2.7.6 kubectl常用操作示例
  • 第3章 深入掌握Pod
  • 3.1 Pod定义详解
  • 3.2 Pod的基本用法
  • 3.3 静态Pod
  • 3.4 Pod容器共享Volume
  • 3.5 Pod的配置管理
  • 3.5.1 ConfigMap概述
  • 3.5.2 创建ConfigMap资源对象
  • 3.5.3 在Pod中使用ConfigMap
  • 3.5.4 使用ConfigMap的限制条件
  • 3.6 在容器内获取Pod信息(Downward API)
  • 3.6.1 环境变量方式
  • 3.6.2 Volume挂载方式
  • 3.6.3 Downward API支持设置的Pod和Container信息
  • 3.7 Pod生命周期和重启策略
  • 3.8 Pod健康检查和服务可用性检查
  • 3.9 玩转Pod调度
  • 3.9.1 Deployment或RC:全自动调度
  • 3.9.2 NodeSelector:定向调度
  • 3.9.3 NodeAffinity:Node亲和性调度
  • 3.9.4 PodAffinity:Pod亲和与互斥调度策略
  • 3.9.5 Taints和Tolerations(污点和容忍)
  • 3.9.6 Pod Priority Preemption:Pod优先级调度
  • 3.9.7 DaemonSet:在每个Node上都调度一个Pod
  • 3.9.8 Job:批处理调度
  • 3.9.9 Cronjob:定时任务
  • 3.9.10 自定义调度器
  • 3.9.11 Pod容灾调度
  • 3.10 Init Container(初始化容器)
  • 3.11 Pod的升级和回滚
  • 3.11.1 Deployment的升级
  • 3.11.2 Deployment的回滚
  • 3.11.3 暂停和恢复Deployment的部署操作
  • 3.11.4 其他管理对象的更新策略
  • 3.12 Pod的扩缩容
  • 3.12.1 手动扩缩容机制
  • 3.12.2 自动扩缩容机制
  • 3.13 使用StatefulSet搭建MongoDB集群
  • 3.13.1 前提条件
  • 3.13.2 部署StatefulSet
  • 3.13.3 查看MongoDB集群的状态
  • 3.13.4 StatefulSet的常见应用场景
  • 第4章 深入掌握Service
  • 4.1 Service定义详解
  • 4.2 Service的概念和原理
  • 4.2.1 Service的概念
  • 4.2.2 Service的负载均衡机制
  • 4.2.3 Service的多端口设置
  • 4.2.4 将外部服务定义为Service
  • 4.2.5 将Service暴露到集群外部
  • 4.2.6 Service支持的网络协议
  • 4.2.7 Kubernetes的服务发现机制
  • 4.2.8 Headless Service的概念和应用
  • 4.2.9 端点分片与服务拓扑
  • 4.3 DNS服务搭建和配置指南
  • 4.3.1 修改每个Node上kubelet的DNS启动参数
  • 4.3.2 部署CoreDNS服务
  • 4.3.3 服务名的DNS解析
  • 4.3.4 CoreDNS的配置说明
  • 4.4 Node本地DNS缓存
  • 4.5 Pod的DNS域名相关特性
  • 4.5.1 Pod的DNS域名
  • 4.5.2 为Pod自定义hostname和subdomain
  • 4.5.3 Pod的DNS策略
  • 4.5.4 Pod中的自定义DNS配置
  • 4.6 Ingress 7层路由机制
  • 4.6.1 一个完整的例子(Ingress Controller+Ingress策略+客户端访问)
  • 4.6.2 Ingress资源对象详解
  • 4.6.3 Ingress策略配置详解
  • 4.6.4 Ingress的TLS安全设置
  • 第5章 核心组件的运行机制
  • 5.1 Kubernetes API Server原理解析
  • 5.1.1 Kubernetes API Server概述
  • 5.1.2 API Server架构解析
  • 5.1.3 独特的Kubernetes Proxy API接口
  • 5.1.4 集群功能模块之间的通信
  • 5.1.5 API Server网络隔离的设计
  • 5.2 Controller Manager原理解析
  • 5.2.1 副本调度控制器
  • 5.2.2 Node Controller
  • 5.2.3 ResourceQuota Controller
  • 5.2.4 Namespace Controller
  • 5.2.5 Service Controller与Endpoints Controller
  • 5.3 Scheduler原理解析
  • 5.3.1 Scheduler的调度流程
  • 5.3.2 Scheduler Framework
  • 5.3.3 多调度器特性
  • 5.4 kubelet运行机制解析
  • 5.4.1 节点管理
  • 5.4.2 Pod管理
  • 5.4.3 容器健康检查
  • 5.4.4 cAdvisor资源监控
  • 5.4.5 容器运行时
  • 5.5 kube-proxy运行机制解析
  • 5.5.1 第一代Proxy
  • 5.5.2 第二代Proxy
  • 5.5.2 第三代Proxy
  • 第6章 深入分析集群安全机制
  • 6.1 API Server认证管理
  • 6.1.1 HTTPS证书认证
  • 6.1.2 HTTP Bearer Token认证
  • 6.1.3 OpenID Connect Token第三方认证
  • 6.1.4 Authenticating Proxy(认证代理)
  • 6.2 API Server授权管理
  • 6.2.1 ABAC授权模式详解
  • 6.2.2 Webhook授权模式详解
  • 6.2.3 RBAC授权模式详解
  • 6.2.4 Node授权模式详解
  • 6.3 Admission Control
  • 6.4 Service Account
  • 6.5 Secret私密凭据
  • 6.6 Pod安全策略
  • 6.6.1 PodSecurityPolicy的工作机制
  • 6.6.2 PodSecurityPolicy配置详解
  • 6.6.3 PodSecurityPolicy策略示例
  • 6.6.4 PodSecurityPolicy的RBAC授权
  • 6.6.5 Pod安全设置(Security Context)详解
  • 第7章 网络原理
  • 7.1 Kubernetes网络模型
  • 7.2 Docker网络基础
  • 7.2.1 网络命名空间
  • 7.2.2 Veth设备对
  • 7.2.3 网桥
  • 7.2.4 iptables和Netfilter
  • 7.2.5 路由
  • 7.3 Docker的网络实现
  • 7.3.1 查看Docker启动后的系统情况
  • 7.3.2 查看容器启动后的网络配置(容器无端口映射)
  • 7.3.3 查看容器启动后的网络配置(容器有端口映射)
  • 7.3.4 Docker的网络局限性
  • 7.4 Kubernetes的网络实现
  • 7.4.1 容器到容器的通信
  • 7.4.2 Pod之间的通信
  • 7.5 Pod和Service网络实战
  • 7.5.1 部署一个RC/Pod
  • 7.5.2 发布一个服务
  • 7.6 CNI网络模型
  • 7.6.1 CNM网络模型简介
  • 7.6.2 CNI网络模型详解
  • 7.6.3 在Kubernetes中使用网络插件
  • 7.7 开源容器网络方案
  • 7.7.1 Flannel插件的原理和部署示例
  • 7.7.2 Open vSwitch插件的原理和部署示例
  • 7.7.3 直接路由的原理和部署示例
  • 7.7.4 Calico插件的原理和部署示例
  • 7.8 Kubernetes的网络策略
  • 7.8.1 网络策略设置说明
  • 7.8.2 Selector功能说明
  • 7.8.3 为命名空间配置默认的网络策略
  • 7.8.4 网络策略应用示例
  • 7.8.5 NetworkPolicy的发展
  • 7.9 Kubernetes对IPv4和IPv6双栈的支持
  • 7.9.1 为Kubernetes集群启用IPv4和IPv6双栈
  • 7.9.2 Pod双栈IP地址验证
  • 7.9.3 Service双栈IP地址验证
  • 第8章 存储原理和应用
  • 8.1 Kubernetes存储机制概述
  • 8.1.1 将资源对象映射为存储卷
  • 8.1.2 Node本地存储卷
  • 8.2 持久卷(Persistent Volume)详解
  • 8.2.1 PV和PVC的工作原理
  • 8.2.2 PV详解
  • 8.2.3 PVC详解
  • 8.2.4 Pod使用PVC
  • 8.2.5 StorageClass详解
  • 8.3 动态存储管理实战:GlusterFS
  • 8.3.1 准备工作
  • 8.3.2 创建GlusterFS管理服务容器集群
  • 8.3.3 创建Heketi服务
  • 8.3.4 通过Heketi管理GlusterFS集群
  • 8.3.5 定义StorageClass
  • 8.3.6 定义PVC
  • 8.3.7 Pod使用PVC的存储资源
  • 8.4 CSI存储机制详解
  • 8.4.1 CSI的设计背景
  • 8.4.2 CSI的核心组件和部署架构
  • 8.4.3 CSI存储插件应用实战
  • 8.4.4 CSI存储快照管理
  • 8.4.5 CSI的发展
  • 第9章 Kubernetes开发指南
  • 9.1 REST简述
  • 9.2 Kubernetes API详解
  • 9.2.1 Kubernetes API概述
  • 9.2.2 Kubernetes API版本的演进策略
  • 9.2.3 API Groups(API组)
  • 9.2.4 API REST的方法说明
  • 9.2.5 API Server响应说明
  • 9.3 使用Fabric8访问Kubernetes API
  • 9.3.1 具体应用示例
  • 9.3.2 其他客户端库
  • 9.4 Kubernetes API的扩展
  • 9.4.1 使用CRD扩展API资源
  • 9.4.2 使用API聚合机制扩展API资源
  • 第10章 Kubernetes运维管理
  • 10.1 Node管理
  • 10.1.1 Node的隔离与恢复
  • 10.1.2 Node的扩容
  • 10.2 更新资源对象的Label
  • 10.3 Namespace:集群环境共享与隔离
  • 10.3.1 创建Namespace
  • 10.3.2 定义Context
  • 10.3.3 设置工作组在特定Context中工作
  • 10.4 Kubernetes资源管理
  • 10.4.1 计算资源管理
  • 10.4.2 资源配置范围管理(LimitRange)
  • 10.4.3 资源服务质量管理(Resource QoS)
  • 10.4.4 资源配额管理(Resource Quotas)
  • 10.4.5 ResourceQuota和LimitRange实践
  • 10.4.6 Pod中多个容器共享进程命名空间
  • 10.4.7 PID资源管理
  • 10.4.8 节点的CPU管理策略
  • 10.4.9 拓扑管理器
  • 10.5 资源紧缺时的Pod驱逐机制
  • 10.5.1 驱逐时机
  • 10.5.2 驱逐阈值
  • 10.5.3 节点状态
  • 10.5.4 节点状态的振荡
  • 10.5.5 回收Node级别的资源
  • 10.5.6 驱逐用户的Pod
  • 10.5.7 资源最少回收量
  • 10.5.8 节点资源紧缺情况下的系统行为
  • 10.5.9 可调度的资源和驱逐策略实践
  • 10.5.10 现阶段的问题
  • 10.6 Pod Disruption Budget(主动驱逐保护)
  • 10.7 Kubernetes集群监控
  • 10.7.1 使用Metrics Server监控Node和Pod的CPU和内存使用数据
  • 10.7.2 Prometheus+Grafana集群性能监控平台搭建
  • 10.8 Kubernetes集群日志管理
  • 10.8.1 容器应用和系统组件输出日志的各种场景
  • 10.8.2 Fluentd+Elasticsearch+Kibana日志系统部署
  • 10.8.3 部署日志采集sidecar工具采集容器日志
  • 10.9 Kubernetes的审计机制
  • 10.10 使用Web UI(Dashboard)管理集群
  • 10.11 Helm:Kubernetes应用包管理工具
  • 10.11.1 Helm的整体架构
  • 10.11.2 Helm版本说明
  • 10.11.3 Helm的安装
  • 10.11.4 Helm的使用
  • 10.11.5 Chart说明
  • 10.11.6 搭建私有Chart仓库
  • 第11章 Trouble Shooting指南
  • 11.1 查看系统Event
  • 11.2 查看容器日志
  • 11.3 查看Kubernetes服务日志
  • 11.4 常见问题
  • 11.4.1 由于无法下载pause镜像导致Pod一直处于Pending状态
  • 11.4.2 Pod创建成功,但RESTARTS数量持续增加
  • 11.4.3 通过服务名无法访问服务
  • 11.5 寻求帮助
  • 第12章 Kubernetes开发中的新功能
  • 12.1 对Windows容器的支持
  • 12.1.1 在Windows Server上安装Docker
  • 12.1.2 在Windows Server上部署Kubernetes Node组件
  • 12.1.3 在Windows Server上部署容器应用和服务
  • 12.1.4 Kubernetes支持的Windows容器特性、限制和发展趋势
  • 12.2 对GPU的支持
  • 12.2.1 环境准备
  • 12.2.2 在容器中使用GPU资源
  • 12.2.3 发展趋势
  • 12.3 Pod的垂直扩缩容
  • 12.3.1 VPA详解
  • 12.3.2 安装Vertical Pod Autoscaler
  • 12.3.3 为Pod设置垂直扩缩容
  • 12.3.4 注意事项
  • 12.4 Kubernetes生态系统与演进路线
  • 12.4.1 Kubernetes与CNCF
  • 12.4.2 Kubernetes的演进路线
  • 12.4.3 Kubernetes的开发模式
  • 附录A Kubernetes核心服务配置详解