正版保障 假一赔十 可开发票
¥ 76.28 5.5折 ¥ 138 全新
库存11件
作者杜宽
出版社清华大学出版社
ISBN9787302603887
出版时间2022-05
装帧平装
开本16开
定价138元
货号29404674
上书时间2024-10-31
Kubernetes(简称K8s)发布至今已经被越来越多的公司所接纳,其受欢迎程度更是超过了人们的想象,已逐渐成为很多公司的标配,尤为重要的是掌握Kubernetes几乎成为所有互联网技术人员的一项技能。
Kubernetes的诞生象征着下一代云计算的时代已经来临,它的出现让很多应用和架构逐步实现了统一化、标准化、简单化,降低了公司因为架构设计不合理带来的问题,而且也大大减少了运维成本,使用Kubernetes可以轻轻松松管理上千台服务器、上万个容器节点。虽然Kubernetes给我们带来了诸多便利,减少了超过半数的应用运维工作,但是迄今为止学习Kubernetes依旧是一件很困难的事情。首先是它的核心概念颇多,学习起来比较乏味,而且部分概念难以理解,从而导致学习成本甚高;其次Kubernetes涉及的领域也比较广泛,了解过CNCF的读者可能知道,以Kubernetes为中心展开的周边云原生的生态是多么宏伟且庞大的一张蓝图。由此看来,学习Kubernetes并不是一件容易的事情,也并非是一项两三天就能掌握的技术,但这些并不意味着Kubernetes是一艘不可驾驶的“船舶”,我们只需要找到方向由浅入深,系统地学习Kubernetes的设计理念及周边比较重要且常用的知识,这样下来无论公司有什么样的需求场景,无论今后再学习什么样的周边生态,都不再是一件困难的事情。而本书的出发点就是为了解决上述问题,让读者更加清晰明了、全面、系统地学习Kubernetes知识及周边的一些常用工具的使用,从而成为一位合格的Kubernetes全栈工程师及DevOps工程师。
本书根据不同的知识结构将内容划分为7个板块,共18章,分别为安装篇、基础篇、进阶篇、高级篇、运维篇、DevOps篇和拓展篇。
第1、2章为安装篇,主要介绍Kubernetes集群高可用安装,让读者掌握如何高效地搭建一套高可用的Kubernetes集群并应用于企业实践,当然对于Kubernetes的安装不仅限于书中的版本(本书使用的Kubernetes版本为1.22),其他版本的安装步骤与此类似。
第3~7章为基础篇,将着重介绍本书的主角Kubernetes,同时也会介绍Docker的基础和镜像的制作优化等。Kubernetes部分包含Kubernetes的基础概念(Master、Node和Pod)、核心调度资源(Deployment、StatefulSet、DaemonSet、CronJob)、服务发布(Service和Ingress)和配置管理(ConfigMap和Secret)。
第8~11章为进阶篇,主要介绍Kubernetes的持久化存储、动态存储、CSI、高级调度(容忍、污点和亲和力)、服务质量、权限管理、Kubernetes资源配额管理。
第12、13章为高级篇,主要介绍云原生存储、中间件容器化、Operator和Helm的使用。
第14~16章为运维篇,主要介绍针对Kubernetes的日志收集(EFK)、监控告警(Prometheus和Grafana)、生产级服务发布Ingress实践。
第17章为DevOps篇,主要介绍基于Kubernetes、Jenkins、Harbor、GitLab等工具建设生产级的DevOps平台,实现开发、测试、UAT、生产环境的流水线设计。
第18章为拓展篇,主要介绍云原生基石——服务网格Istio的使用,实现对Kubernetes内部服务的细粒度流量管理。
综上,本书不仅介绍了Kubernetes生产级高可用架构、Kubernetes基础及进阶知识、高级调度、服务发布以及稍复杂的Kubernetes持久化及权限管理、包管理工具Helm和Operator的使用,同时也介绍了基于Prometheus的监控告警、基于Jenkins Harbor GitLab Kubernetes实现DevOps平台建设,还介绍了Kubernetes周边一些CNCF孵化的项目等,涵盖了大部分技术人员都会遇到的Kubernetes技术难点及企业中一些比较常见的技术方案。特别是,书中的案例都来自于生产一线,并经过多次验证,可以直接用于生产环境。
本书既适合从零开始的读者,也适合运维人员、开发人员和架构师使用。
本书还配备了完整的命令代码,请扫描以下二维码获取:
读者如果在使用本书的过程中遇到问题,可登录GitHub(https://github.com/dotbalo/kubernetes- guidebook)寻求解答或发邮件到booksaga@126.com,邮件主题为“云原生Kubernetes全栈架构师 实战”。
限于笔者水平,书中难免出现疏漏,敬请业界高手与专家不吝指教。
杜宽
2022.1.1
本书以一个Kubernetes工程师的视角,全面系统地介绍Kubernetes常见的知识点、企业应用实践及运维管理方法。本书共分18章,第1、2章介绍如何快速搭建高可用的Kubernetes集群;第3~7章介绍Docker的基础和镜像的制作优化,以及Kubernetes的基础概念(Master、Node和Pod)、核心调度资源(Deployment、StatefulSet、DaemonSet、CronJob)、服务发布(Service和Ingress)和配置管理(ConfigMap和Secret)。第8~11章主要介绍Kubernetes的持久化存储、动态存储、CSI、高级调度(容忍、污点和亲和力)、服务质量、权限管理、Kubernetes资源配额管理。第12、13章主要介绍云原生存储、中间件容器化、Operator和Helm的使用。第14~16章主要介绍针对Kubernetes的日志收集(EFK)、监控告警(Prometheus和Grafana)、生产级服务发布Ingress的使用。第17章主要介绍基于Kubernetes、Jenkins、Harbor、GitLab等工具建设生产级的DevOps平台,实现开发、测试、UAT、生产环境的流水线设计。第18章主要介绍服务网格Istio的使用,实现对Kubernetes内部服务的细粒度流量管理。 本书从概念到实践,从手工到自动化,内容翔实且丰富,其中的范例与项目均在实践中多次验证,可直接用于生产环境。本书适合Kubernetes初学者、开发人员、运维人员、架构师使用,也可以作为培训机构和大专院校的教学用书。
杜 宽,Kubernetes实践者,目前在某集团公司负责云原生相关工作,是Linux基金会开源软件学园官方导师,专注于容器、K8s、服务网格、Serverless、DevOps、云原生等技术。
第1篇 安 装 篇
第1章 Kubeadm安装高可用K8s集群 2
1.1 基本环境配置 2
1.2 内核配置 5
1.3 K8s组件和Runtime安装 7
1.3.1 Containerd作为Runtime 7
1.3.2 Docker作为Runtime 9
1.3.3 安装Kubernetes组件 9
1.4 高可用组件安装 10
1.5 集群初始化 14
1.6 Master实现高可用 17
1.7 Node节点的配置 17
1.8 Token过期处理 18
1.9 Calico组件的安装 18
1.10 Metrics部署 19
1.11 Dashboard部署 20
1.11.1 安装Dashboard 20
1.11.2 登录Dashboard 21
1.12 注意事项 23
1.13 小结 24
第2章 二进制安装高可用K8s集群 25
2.1 基本环境配置 25
2.2 内核配置 28
2.3 基本组件安装 30
2.3.1 Containerd作为Runtime 30
2.3.2 Docker作为Runtime 31
2.3.3 K8s及Etcd的安装 32
2.4 生成证书 33
2.4.1 Etcd证书 33
2.4.2 K8s组件证书 34
2.5 高可用配置 37
2.6 Etcd集群配置 38
2.6.1 创建Etcd的配置文件 38
2.6.2 创建Service 38
2.7 K8s Master节点配置 39
2.7.1 APIServer 39
2.7.2 Controller Manager 40
2.7.3 Scheduler 40
2.8 TLS Bootstrapping配置 41
2.9 Node节点配置 42
2.9.1 Kubelet配置 42
2.9.2 kube-proxy配置 44
2.10 安装Calico 46
2.11 安装CoreDNS 47
2.12 安装Metrics Server 47
2.13 安装Dashboard 47
2.14 小结 48
第2篇 基 础 篇
第3章 Docker基础 50
3.1 Docker介绍 50
3.2 Docker安装 51
3.3 Docker基本命令 51
3.4 Dockerfile的编写 57
3.5 镜像大小优化 61
3.6 多阶段构建 63
3.7 小结 65
第4章 Kubernetes的基础概念 66
4.1 为什么要用Kubernetes 66
4.1.1 对于开发人员 67
4.1.2 对于运维人员 67
4.2 Kubernetes带来的挑战 68
4.3 Kubernetes架构解析 69
4.4 Master节点 70
4.5 Node节点 71
4.6 Pod的概念 72
4.6.1 什么是Pod 72
4.6.2 Pod探针 74
4.6.3 Pod镜像拉取策略和重启策略 75
4.6.4 创建一个Pod 75
4.7 小结 78
第5章 Kubernetes调度基础 79
5.1 Replication Controller和ReplicaSet 79
5.1.1 Replication Controller 79
5.1.2 ReplicaSet 80
5.2 无状态应用管理Deployment 81
5.2.1 创建Deployment 82
5.2.2 更新Deployment 84
5.2.3 回滚Deployment 85
5.2.4 扩容Deployment 86
5.2.5 暂停和恢复Deployment更新 87
5.2.6 更新Deployment的注意事项 88
5.3 有状态应用管理StatefulSet 89
5.3.1 StatefulSet的基本概念 89
5.3.2 StatefulSet的注意事项 90
5.3.3 定义一个StatefulSet资源文件 90
5.3.4 创建StatefulSet 92
5.3.5 StatefulSet创建Pod的流程 92
5.3.6 StatefulSet扩容和缩容 93
5.3.7 StatefulSet更新策略 94
5.3.8 删除StatefulSet 96
5.4 守护进程集DaemonSet 97
5.4.1 什么是DaemonSet 97
5.4.2 定义一个DaemonSet 98
5.4.3 创建DaemonSet 100
5.4.4 更新和回滚DaemonSet 101
5.5 CronJob 102
5.5.1 创建CronJob 102
5.5.2 可用参数的配置 103
5.6 小结 105
第6章 Kubernetes服务发布基础 106
6.1 标签和选择器 106
6.1.1 定义标签 107
6.1.2 选择器 108
6.1.3 修改标签 109
6.1.4 删除标签 109
6.2 Service 110
6.2.1 Service的基本概念 110
6.2.2 定义Service 111
6.2.3 无选择器的Service和Endpoint 111
6.2.4 ExternalName Service 113
6.2.5 Service代理模式 113
6.2.6 多端口Service 114
6.2.7 Service的类型 115
6.2.8 Kubernetes服务发现 116
6.3 Ingress 118
6.3.1 基本概念 118
6.3.2 创建一个Ingress 119
6.3.3 Ingress使用入门 121
6.3.4 更新Ingress 123
6.4 小结 123
第7章 Kubernetes配置管理 124
7.1 什么是ConfigMap 124
7.2 创建ConfigMap 125
7.2.1 基于目录创建ConfigMap 125
7.2.2 基于文件创建ConfigMap 126
7.2.3 基于ENV文件创建ConfigMap 127
7.2.4 基于字符值创建ConfigMap 128
7.3 ConfigMap实践 128
7.3.1 使用valueFrom定义容器环境变量 128
7.3.2 使用envFrom定义容器的环境变量 130
7.3.3 以文件形式挂载ConfigMap 131
7.3.4 自定义文件名挂载ConfigMap 132
7.3.5 指定挂载的文件权限 132
7.4 ConfigMap限制 133
7.5 加密数据管理Secret 134
7.5.1 创建Secret 134
7.5.2 解码Secret 135
7.6 Secret实践 136
7.6.1 以文件形式挂载Secret 136
7.6.2 自定义文件名挂载 137
7.6.3 Secret作为环境变量 138
7.6.4 Secret文件权限 138
7.7 常用的Secret类型 139
7.7.1 Docker镜像仓库Secret 139
7.7.2 HTTPS证书类型的Secret 140
7.8 SubPath解决挂载覆盖问题 141
7.9 ConfigMap和Secret热更新 141
7.10 小结 143
第3 篇 进 阶 篇
第8章 Kubernetes存储入门 146
8.1 Volume的概念 146
8.2 Volume的类型 147
8.3 示例1:通过emptyDir共享数据 148
8.4 示例2:使用HostPath挂载宿主机文件 149
8.5 示例3:挂载NFS至容器 150
8.6 PersistentVolume 151
8.6.1 PV回收策略 152
8.6.2 PV访问策略 152
8.6.3 基于NFS的PV 153
8.6.4 基于HostPath的PV 154
8.6.5 基于Ceph RBD的PV 154
8.6.6 PV的状态 155
8.7 PersistentVolumeClaim 155
8.7.1 PVC的创建 156
8.7.2 PVC的使用 157
8.8 动态存储StorageClass 158
8.8.1 定义StorageClass 158
8.8.2 整合StorageClass和Ceph RBD 159
8.9 存储的未来:CSI 162
8.9.1 通过CSI连接CephFS 163
8.9.2 通过CSI连接Ceph RBD 169
8.10 小结 173
第9章 Kubernetes高级调度 174
9.1 初始化容器InitContainer 174
9.1.1 InitContainer的基本概念 174
9.1.2 示例1:等待依赖服务启动 175
9.1.3 示例2:服务注册 176
9.1.4 示例3:克隆Git代码到容器中 176
9.1.5 示例4:多个初始化容器使用 177
9.2 临时容器Ephemeral Containers 178
9.2.1 临时容器的概念 178
9.2.2 开启临时容器功能 178
9.2.3 临时容器的使用 179
9.3 自动扩缩容HPA 182
9.3.1 什么是HPA 182
9.3.2 HPA实践——实现Web服务器的自动伸缩特性 182
9.4 Taint和Toleration 184
9.4.1 容忍和污点的基本概念 184
9.4.2 使用案例 187
9.4.3 基于Taint的驱逐 187
9.5 Affinity亲和力 189
9.5.1 Affinity的分类 189
9.5.2 Node Affinity 190
9.5.3 PodAffinity和PodAntiAffinity 191
9.5.4 示例1:同一个应用部署在不同的宿主机 193
9.5.5 示例2:同一个应用不同副本的固定节点 194
9.5.6 示例3:应用和缓存尽量部署在同一个域内 195
9.6 小结 196
第10章 Kubernetes资源管理 197
10.1 ResourceQuota 197
10.1.1 什么是资源配额 197
10.1.2 定义一个ResourceQuota 198
10.1.3 ResourceQuota的使用 199
10.2 LimitRange 201
10.2.1 LimitRange的用途 201
10.2.2 示例1:配置默认的requests和limits 201
10.2.3 示例2:配置requests和limits的范围 202
10.2.4 示例3:限制申请存储空间的大小 204
10.3 QoS 204
10.3.1 什么是服务质量保证 204
10.3.2 示例1:实现QoS为Guaranteed的Pod 206
10.3.3 示例2:实现QoS为Burstable的Pod 206
10.3.4 示例3:实现QoS为BestEffort的Pod 207
10.4 小结 208
第11章 Kubernetes安全入门 209
11.1 权
— 没有更多了 —
以下为对购买帮助不大的评价