全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 操作系统

Kubernetes权威指南(从Docker到Kubernetes实践全接触第4版)/博文视点云原生精品丛书

  • 定价: ¥168
  • ISBN:9787121362354
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:电子工业
  • 页数:805页
  • 作者:编者:龚正//吴治...
  • 立即节省:
  • 2019-06-01 第1版
  • 2019-06-01 第1次印刷
我要买:
点击放图片

导语

  

    第4版基于Kubernetes 1.14版本进行内容升级,去掉了前三版源码篇的内容。
    目录升级,更便于检索,作为K8s容器工具书更为方便。
    提供源码下载,参见GitHub的kubeguide/K8sDefinitiveGuide-V4-Sourcecode目录。
    CNCF、VMware、华为、阿里巴巴、才云、京东众咖力荐!
    从服务化到云原生运维必选图书。

内容提要

  

    Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。本书从架构师、开发人员和运维人员的角度,阐述了Kubernetes的基本概念、实践指南、核心原理、开发指导、运维指南、新特性演进等内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕在生产环境中可能出现的问题,给出了大量的典型案例,比如安全配置方案、网络方案、共享存储方案、高可用方案及Trouble Shooting技巧等,有很强的实战指导意义。本书内容随着Kubernetes的版本更新不断完善,目前涵盖了Kubernetes从1.0到1.14版本的主要特性,努力为Kubernetes用户提供全方位的Kubernetes技术指南。本书源码已上传至GitHub的kubeguide/K8sDefinitiveGuide-V4-Sourcecode目录,可自行下载本书源码进行练习。
    无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士,本书都极具参考价值。

目录

第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-apiserver、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-apiserver启动参数
    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集群
第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层路由机制
第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的安全策略配置
第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.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.3  使用Java程序访问Kubernetes API
    9.3.1  Jersey
    9.3.2  Fabric
    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应用包管理工具
第11章  Trouble Shooting指导
  11.1  查看系统Event
  11.2  查看容器日志
  11.3  查看Kubernetes服务日志
  11.4  常见问题
  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的演进路线和开发模式

前言

  

    本书第1版出版于2016年,几年过去,Kubernetes已从一个新生事物发展为一个影响全球IT技术的基础设施平台,也推动了云原生应用、微服务架构、Service Mesh等热门技术的普及和落地。现在,Kubernetes已经成为明星项目,其开源项目拥有超过两万名贡献者,成为开源历史上发展速度超快的项目之一。
    在这几年里:
    Kubernetes背后的重要开源公司RedHat被IBM大手笔收购,使RedHat基于Kubernetes架构的先进PaaS平台——OpenShift成为IBM在云计算基础设施中的重要筹码;
    Kubernetes的两位核心创始人Joe Beda 和Craig McLuckie所创立的提供Kubernetes咨询和技术支持的初创公司Heptio也被虚拟化领域的巨头VMware收购;
    Oracle收购了丹麦的一家初创公司Wercker,然后开发了Click2Kube,这是面向Oracle裸机云(Oracle Bare Metal Cloud)的一键式Kubernetes集群安装工具;
    世界500强中的一些大型企业也决定以Kubernetes为基础重构内部IT平台架构,大数据系统的一些用户也在努力将其生产系统从庞大的大数据专有技术栈中剥离出来靠拢Kubernetes。
    Kubernetes是将“一切以服务(Service)为中心,一切围绕服务运转”作为指导思想的创新型产品,这是它的一个亮点。它的功能和架构设计自始至终地遵循了这一指导思想,构建在Kubernetes上的系统不仅可以独立运行在物理机、虚拟机集群或者企业私有云上,也可以被托管在公有云上。
    Kubernetes的另一个亮点是自动化。在Kubernetes的解决方案中,一个服务可以自我扩展、自我诊断,并且容易升级,在收到服务扩容的请求后,Kubernetes会触发调度流程,最终在选定的目标节点上启动相应数量的服务实例副本,这些服务实例副本在启动成功后会自动加入负载均衡器中并生效,整个过程无须额外的人工操作。另外,Kubernetes会定时巡查每个服务的所有实例的可用性,确保服务实例的数量始终保持为预期的数量,当它发现某个实例不可用时,会自动重启该实例或者在其他节点上重新调度、运行一个新实例,这样,一个复杂的过程无须人工干预即可全部自动完成。试想一下,如果一个包括几十个节点且运行着几万个容器的复杂系统,其负载均衡、故障检测和故障修复等都需要人工介入进行处理,其工作量将多大。
    通常,我们会把Kubernetes看作Docker的上层架构,就好像Java与J2EE的关系一样:J2EE是以Java为基础的企业级软件架构,Kubernetes则以Docker为基础打造了一个云计算时代的全新分布式系统架构。但Kubernetes与Docker之间还存在着更为复杂的关系,从表面上看,似乎Kubernetes离不开Docker,但实际上在Kubernetes的架构里,Docker只是其目前支持的两种底层容器技术之一,另一种容器技术则是Rocket,Rocket为CoreOS推出的竞争产品。
    Kubernetes之所以同时支持Docker和Rocket这两种互相竞争的容器技术,是有深刻的历史原因的。快速发展的Docker打败了谷歌名噪一时的开源容器技术lmctfy,并迅速风靡世界。但是,作为一个已经对全球IT公司产生重要影响的技术,Docker容器标准的制定不可能被任何一个公司主导。于是,CoreOS推出了与Docker抗衡的开源容器项目Rocket,动员一些知名IT公司一起主导容器技术的标准化,并与谷歌共同发起基于CoreOS+ Rocket+Kubernetes的新项目 Tectonic,使容器技术分裂态势加剧。最后,Linux基金会于2015年6月宣布成立开放容器技术项目(Open Container Project),谷歌、CoreOS及Docker都加入了该项目。OCP项目成立后,Docker公司放弃了自己的独家控制权,Docker容器格式也被OCP采纳为新标准的基础,Docker负责起草OCP草案规范的初稿文档,并提交自己的容器执行引擎的源码作为OCP项目的启动资源。
    2015年7月,谷歌正式宣布加入OpenStack阵营,其目标是确保Linux容器及其关联的容器管理技术Kubernetes能够被OpenStack生态圈所接纳,这也意味着对数据中心控制平面的争夺已经结束,以容器为代表的应用形态与以虚拟化为代表的系统形态将会完美融合于OpenStack之上,并与软件定义网络和软件定义存储一起主导下一代数据中心。
    谷歌凭借着几十年大规模容器使用的丰富经验,步步为营,先是祭出Kubernetes这个神器,然后掌控了容器技术的制定标准,最后入驻OpenStack阵营全力支持Kubernetes的发展。可以预测,Kubernetes的影响力可能超过十年,所以,我们每个IT人都有理由重视这门新技术。
    谁能比别人领先一步掌握新技术,谁就能在竞争中赢得先机。慧与中国通信和媒体解决方案领域的资深专家团一起分工协作、并行研究,并废寝忘食地合力撰写,才促成了这部巨著的出版。经过这些年的高速发展,Kubernetes先后发布了十几个大版本,每个版本都带来了大量的新特性,能够处理的应用场景也越来越丰富。本书遵循从入门到精通的学习路线,涵盖了入门、安装指南、实践指南、核心原理、开发指南、运维指南、新特性演进等内容,内容翔实、图文并茂,几乎囊括了Kubernetes当前主流版本的方方面面,无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士,本书都极具参考价值。
    吴治辉
    HPE资深架构师