展开全部

主编推荐语

Kubernetes权威指南:涵盖v1.0至v1.13版本特性,提供实践指南、开发运维指导,强实战指导意义。

内容简介

Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。《Kubernetes权威指南:从Docker到Kubernetes实践全接触(纪念版)》从架构师、开发人员和运维人员的角度,阐述了Kubernetes的基本概念、实践指南、核心原理、开发指导、运维指南等内容,图文并茂、内容丰富、由浅入深、讲解全面;围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全配置、网络方案、共享存储方案、高可用性方案及Trouble Shooting技巧等,有很强的实战指导意义。本书随着Kubernetes版本更新不断完善,目前涵盖了Kubernetes从v1.0到v1.13版本的全部特性,尽力为Kubernetes用户提供全方位的指南。

目录

  • 版权信息
  • 推荐序
  • 自序
  • 读者服务
  • 第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 Master
  • 1.4.2 Node
  • 1.4.3 Pod
  • 1.4.4 Label
  • 1.4.5 Replication Controller
  • 1.4.6 Deployment
  • 1.4.7 Horizontal Pod Autoscaler
  • 1.4.8 StatefulSet
  • 1.4.9 Service
  • 1.4.10 Job
  • 1.4.11 Volume
  • 1.4.12 Persistent Volume
  • 1.4.13 Namespace
  • 1.4.14 Annotation
  • 1.4.15 ConfigMap
  • 1.4.16 小结
  • 第2章 Kubernetes安装配置指南
  • 2.1 系统要求
  • 2.2 使用kubeadm工具快速安装Kubernetes集群
  • 2.2.1 安装kubeadm和相关工具
  • 2.2.2 kubeadm config
  • 2.2.3 下载Kubernetes的相关镜像
  • 2.2.4 运行kubeadm init命令安装Master
  • 2.2.5 安装Node,加入集群
  • 2.2.6 安装网络插件
  • 2.2.7 验证Kubernetes集群是否安装完成
  • 2.3 以二进制文件方式安装Kubernetes集群
  • 2.3.1 Master上的etcd、kube-apischmerver、kube-controller-manager、kube-scheduler服务
  • 2.3.2 Node上的kubelet、kube-proxy服务
  • 2.4 Kubernetes集群的安全设置
  • 2.4.1 基于CA签名的双向数字证书认证方式
  • 2.4.2 基于HTTP Base或Token的简单认证方式
  • 2.5 Kubernetes集群的网络配置
  • 2.6 内网中的Kubernetes相关配置
  • 2.6.1 Docker Private Registry(私有Docker镜像库)
  • 2.6.2 kubelet配置
  • 2.7 Kubernetes的版本升级
  • 2.7.1 二进制升级
  • 2.7.2 使用kubeadm进行集群升级
  • 2.8 Kubernetes核心服务配置详解
  • 2.8.1 公共配置参数
  • 2.8.2 kube-apischmerver启动参数
  • 2.8.3 kube-controller-manager启动参数
  • 2.8.4 kube-scheduler启动参数
  • 2.8.5 kubelet启动参数
  • 2.8.6 kube-proxy启动参数
  • 2.9 CRI(容器运行时接口)详解
  • 2.9.1 CRI概述
  • 2.9.2 CRI的主要组件
  • 2.9.3 Pod和容器的生命周期管理
  • 2.9.4 面向容器级别的设计思路
  • 2.9.5 尝试使用新的Docker-CRI来创建容器
  • 2.9.6 CRI的进展
  • 2.10 kubectl命令行工具用法详解
  • 2.10.1 kubectl用法概述
  • 2.10.2 kubectl子命令详解
  • 2.10.3 kubectl参数列表
  • 2.10.4 kubectl输出格式
  • 2.10.5 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 环境变量方式:将Pod信息注入为环境变量
  • 3.6.2 环境变量方式:将容器资源信息注入为环境变量
  • 3.6.3 Volume挂载方式
  • 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.10 Init Container(初始化容器)
  • 3.11 Pod的升级和回滚
  • 3.11.1 Deployment的升级
  • 3.11.2 Deployment的回滚
  • 3.11.3 暂停和恢复Deployment的部署操作,以完成复杂的修改
  • 3.11.4 使用kubectl rolling-update命令完成RC的滚动升级
  • 3.11.5 其他管理对象的更新策略
  • 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.3 Headless Service
  • 4.3.1 自定义SeedProvider
  • 4.3.2 通过Service动态查找Pod
  • 4.3.3 Cassandra集群中新节点的自动添加
  • 4.4 从集群外部访问Pod或Service
  • 4.4.1 将容器应用的端口号映射到物理机
  • 4.4.2 将Service的端口号映射到物理机
  • 4.5 DNS服务搭建和配置指南
  • 4.5.1 在创建DNS服务之前修改每个Node上kubelet的启动参数
  • 4.5.2 创建CoreDNS应用
  • 4.5.3 服务名的DNS解析
  • 4.5.4 CoreDNS的配置说明
  • 4.5.5 Pod级别的DNS配置说明
  • 4.6 Ingress:HTTP 7层路由机制
  • 4.6.1 创建Ingress Controller和默认的backend服务
  • 4.6.2 定义Ingress策略
  • 4.6.3 客户端访问http://mywebsite.com/demo
  • 4.6.4 Ingress的策略配置技巧
  • 4.6.5 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.2 Controller Manager原理解析
  • 5.2.1 Replication Controller
  • 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.4 kubelet运行机制解析
  • 5.4.1 节点管理
  • 5.4.2 Pod管理
  • 5.4.3 容器健康检查
  • 5.4.4 cAdvisor资源监控
  • 5.5 kube-proxy运行机制解析
  • 第6章 深入分析集群安全机制
  • 6.1 API Server认证管理
  • 6.2 API Server授权管理
  • 6.2.1 ABAC授权模式详解
  • 6.2.2 Webhook授权模式详解
  • 6.2.3 RBAC授权模式详解
  • 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 Pod的安全设置详解
  • 第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.4 Kubernetes的网络实现
  • 7.4.1 容器到容器的通信
  • 7.4.2 Pod之间的通信
  • 7.5 Pod和Service网络实战
  • 7.6 CNI网络模型
  • 7.6.1 CNM模型
  • 7.6.2 CNI模型
  • 7.6.3 在Kubernetes中使用网络插件
  • 7.7 Kubernetes网络策略
  • 7.7.1 网络策略配置说明
  • 7.7.2 在Namespace级别设置默认的网络策略
  • 7.7.3 NetworkPolicy的发展
  • 7.8 开源的网络组件
  • 7.8.1 Flannel
  • 7.8.2 Open vSwitch
  • 7.8.3 直接路由
  • 7.8.4 Calico容器网络和网络策略实战
  • 第8章 共享存储原理
  • 8.1 共享存储机制概述
  • 8.2 PV详解
  • 8.2.1 PV的关键配置参数
  • 8.2.2 PV生命周期的各个阶段
  • 8.3 PVC详解
  • 8.4 PV和PVC的生命周期
  • 8.4.1 资源供应
  • 8.4.2 资源绑定
  • 8.4.3 资源使用
  • 8.4.4 资源释放
  • 8.4.5 资源回收
  • 8.5 StorageClass详解
  • 8.5.1 StorageClass的关键配置参数
  • 8.5.2 设置默认的StorageClass
  • 8.6 动态存储管理实战:GlusterFS
  • 8.6.1 准备工作
  • 8.6.2 创建GlusterFS管理服务容器集群
  • 8.6.3 创建Heketi服务
  • 8.6.4 为Heketi设置GlusterFS集群
  • 8.6.5 定义StorageClass
  • 8.6.6 定义PVC
  • 8.6.7 Pod使用PVC的存储资源
  • 8.7 CSI存储机制详解
  • 8.7.1 CSI的设计背景
  • 8.7.2 CSI存储插件的关键组件和部署架构
  • 8.7.3 CSI存储插件的使用示例
  • 8.7.4 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 使用Java程序访问Kubernetes API
  • 9.3.1 Jersey
  • 9.3.2 Fabric8
  • 9.3.3 使用说明
  • 9.3.4 其他客户端库
  • 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 资源管理总结
  • 10.5 资源紧缺时的Pod驱逐机制
  • 10.5.1 驱逐策略
  • 10.5.2 驱逐信号
  • 10.5.3 驱逐阈值
  • 10.5.4 驱逐监控频率
  • 10.5.5 节点的状况
  • 10.5.6 节点状况的抖动
  • 10.5.7 回收Node级别的资源
  • 10.5.8 驱逐用户的Pod
  • 10.5.9 资源最少回收量
  • 10.5.10 节点资源紧缺情况下的系统行为
  • 10.5.11 可调度的资源和驱逐策略实践
  • 10.5.12 现阶段的问题
  • 10.6 Pod Disruption Budget(主动驱逐保护)
  • 10.7 Kubernetes集群的高可用部署方案
  • 10.7.1 手工方式的高可用部署方案
  • 10.7.2 使用kubeadm的高可用部署方案
  • 10.8 Kubernetes集群监控
  • 10.8.1 通过Metrics Server监控Pod和Node的CPU和内存资源使用数据
  • 10.8.2 Prometheus+Grafana集群性能监控平台搭建
  • 10.9 集群统一日志管理
  • 10.9.1 系统部署架构
  • 10.9.2 创建Elasticsearch RC和Service
  • 10.9.3 在每个Node上启动Fluentd
  • 10.9.4 运行Kibana
  • 10.10 Kubernetes的审计机制
  • 10.11 使用Web UI(Dashboard)管理集群
  • 10.12 Helm:Kubernetes应用包管理工具
  • 10.12.1 Helm概述
  • 10.12.2 Helm的主要概念
  • 10.12.3 安装Helm
  • 10.12.4 Helm的常见用法
  • 10.12.5 --set的格式和限制
  • 10.12.6 更多的安装方法
  • 10.12.7 helm upgrade和helm rollback:应用的更新或回滚
  • 10.12.8 helm install/upgrade/rollback命令的常用参数
  • 10.12.9 helm delete:删除一个Release
  • 10.12.10 helm repo:仓库的使用
  • 10.12.11 自定义Chart
  • 10.12.12 对Chart目录结构和配置文件的说明
  • 10.12.13 对Chart.yaml文件的说明
  • 10.12.14 快速制作自定义的Chart
  • 10.12.15 搭建私有Repository
  • 第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 Node部署
  • 12.1.2 Windows容器支持的Kubernetes特性和发展趋势
  • 12.2 对GPU的支持
  • 12.2.1 环境准备
  • 12.2.2 在容器中使用GPU资源
  • 12.2.3 发展趋势
  • 12.3 Pod的垂直扩缩容
  • 12.3.1 前提条件
  • 12.3.2 安装Vertical Pod Autoscaler
  • 12.3.3 为Pod设置垂直扩缩容
  • 12.3.4 注意事项
  • 12.4 Kubernetes的演进路线和开发模式
展开全部

评分及书评

4.5
4个评分
  • 用户头像
    给这本书评了
    5.0

    这是一本非常适合入门 k8s 的参考书,作为开发人员,我认为至少需要了解 3 件事。第一、了解 k8s 的架构,主节点 Master 和工作节点 NodeMaster 节点有 4 个重要的服务,分别是 etcdkube-apischmerverkebu-controller-managerkebu-schedulerNode 节点有 2 个重要的服务,分别是 kubeletkube-proxy,这些服务分别有什么作用。第二、了解 k8s 上的关键资源对象,包括 NodePodRCDeploymentService,他们的作用是什么。第三、了解如何排查运行在 k8s 上的服务的问题,比如通过 k8s event 排查服务重启问题。

      转发
      评论

    出版方

    电子工业出版社

    电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。