封面
版权信息
内容简介
作者简介
推荐序
前言
第1篇 安装篇
第1章 Kubeadm安装高可用K8s集群
1.1 基本环境配置
1.2 内核配置
1.3 K8s组件和Runtime安装
1.3.1 Containerd作为Runtime
1.3.2 Docker作为Runtime
1.3.3 安装Kubernetes组件
1.4 高可用组件安装
1.5 集群初始化
1.6 Master实现高可用
1.7 Node节点的配置
1.8 Token过期处理
1.9 Calico组件的安装
1.10 Metrics部署
1.11 Dashboard部署
1.11.1 安装Dashboard
1.11.2 登录Dashboard
1.12 注意事项
1.13 小结
第2章 二进制安装高可用K8s集群
2.1 基本环境配置
2.2 内核配置
2.3 基本组件安装
2.3.1 Containerd作为Runtime
2.3.2 Docker作为Runtime
2.3.3 K8s及Etcd的安装
2.4 生成证书
2.4.1 Etcd证书
2.4.2 K8s组件证书
2.5 高可用配置
2.6 Etcd集群配置
2.6.1 创建Etcd的配置文件
2.6.2 创建Service
2.7 K8s Master节点配置
2.7.1 APIServer
2.7.2 Controller Manager
2.7.3 Scheduler
2.8 TLS Bootstrapping配置
2.9 Node节点配置
2.9.1 Kubelet配置
2.9.2 kube-proxy配置
2.10 安装Calico
2.11 安装CoreDNS
2.12 安装Metrics Server
2.13 安装Dashboard
2.14 小结
第2篇 基础篇
第3章 Docker基础
3.1 Docker介绍
3.2 Docker安装
3.3 Docker基本命令
3.4 Dockerfile的编写
3.5 镜像大小优化
3.6 多阶段构建
3.7 小结
第4章 Kubernetes的基础概念
4.1 为什么要用Kubernetes
4.1.1 对于开发人员
4.1.2 对于运维人员
4.2 Kubernetes带来的挑战
4.3 Kubernetes架构解析
4.4 Master节点
4.5 Node节点
4.6 Pod的概念
4.6.1 什么是Pod
4.6.2 Pod探针
4.6.3 Pod镜像拉取策略和重启策略
4.6.4 创建一个Pod
4.7 小结
第5章 Kubernetes调度基础
5.1 Replication Controller和ReplicaSet
5.1.1 Replication Controller
5.1.2 ReplicaSet
5.2 无状态应用管理Deployment
5.2.1 创建Deployment
5.2.2 更新Deployment
5.2.3 回滚Deployment
5.2.4 扩容Deployment
5.2.5 暂停和恢复Deployment更新
5.2.6 更新Deployment的注意事项
5.3 有状态应用管理StatefulSet
5.3.1 StatefulSet的基本概念
5.3.2 StatefulSet的注意事项
5.3.3 定义一个StatefulSet资源文件
5.3.4 创建StatefulSet
5.3.5 StatefulSet创建Pod的流程
5.3.6 StatefulSet扩容和缩容
5.3.7 StatefulSet更新策略
5.3.8 删除StatefulSet
5.4 守护进程集DaemonSet
5.4.1 什么是DaemonSet
5.4.2 定义一个DaemonSet
5.4.3 创建DaemonSet
5.4.4 更新和回滚DaemonSet
5.5 CronJob
5.5.1 创建CronJob
5.5.2 可用参数的配置
5.6 小结
第6章 Kubernetes服务发布基础
6.1 标签和选择器
6.1.1 定义标签
6.1.2 选择器
6.1.3 修改标签
6.1.4 删除标签
6.2 Service
6.2.1 Service的基本概念
6.2.2 定义Service
6.2.3 无选择器的Service和Endpoint
6.2.4 ExternalName Service
6.2.5 Service代理模式
6.2.6 多端口Service
6.2.7 Service的类型
6.2.8 Kubernetes服务发现
6.3 Ingress
6.3.1 基本概念
6.3.2 创建一个Ingress
6.3.3 Ingress使用入门
6.3.4 更新Ingress
6.4 小结
第7章 Kubernetes配置管理
7.1 什么是ConfigMap
7.2 创建ConfigMap
7.2.1 基于目录创建ConfigMap
7.2.2 基于文件创建ConfigMap
7.2.3 基于ENV文件创建ConfigMap
7.2.4 基于字符值创建ConfigMap
7.3 ConfigMap实践
7.3.1 使用valueFrom定义容器环境变量
7.3.2 使用envFrom定义容器的环境变量
7.3.3 以文件形式挂载ConfigMap
7.3.4 自定义文件名挂载ConfigMap
7.3.5 指定挂载的文件权限
7.4 ConfigMap限制
7.5 加密数据管理Secret
7.5.1 创建Secret
7.5.2 解码Secret
7.6 Secret实践
7.6.1 以文件形式挂载Secret
7.6.2 自定义文件名挂载
7.6.3 Secret作为环境变量
7.6.4 Secret文件权限
7.7 常用的Secret类型
7.7.1 Docker镜像仓库Secret
7.7.2 HTTPS证书类型的Secret
7.8 SubPath解决挂载覆盖问题
7.9 ConfigMap和Secret热更新
7.10 小结
第3篇 进阶篇
第8章 Kubernetes存储入门
8.1 Volume的概念
8.2 Volume的类型
8.3 示例1:通过emptyDir共享数据
8.4 示例2:使用HostPath挂载宿主机文件
8.5 示例3:挂载NFS至容器
8.6 PersistentVolume
8.6.1 PV回收策略
8.6.2 PV访问策略
8.6.3 基于NFS的PV
8.6.4 基于HostPath的PV
8.6.5 基于Ceph RBD的PV
8.6.6 PV的状态
8.7 PersistentVolumeClaim
8.7.1 PVC的创建
8.7.2 PVC的使用
8.8 动态存储StorageClass
8.8.1 定义StorageClass
8.8.2 整合StorageClass和Ceph RBD
8.9 存储的未来:CSI
8.9.1 通过CSI连接CephFS
8.9.2 通过CSI连接Ceph RBD
8.10 小结
第9章 Kubernetes高级调度
9.1 初始化容器InitContainer
9.1.1 InitContainer的基本概念
9.1.2 示例1:等待依赖服务启动
9.1.3 示例2:服务注册
9.1.4 示例3:克隆Git代码到容器中
9.1.5 示例4:多个初始化容器使用
9.2 临时容器Ephemeral Containers
9.2.1 临时容器的概念
9.2.2 开启临时容器功能
9.2.3 临时容器的使用
9.3 自动扩缩容HPA
9.3.1 什么是HPA
9.3.2 HPA实践——实现Web服务器的自动伸缩特性
9.4 Taint和Toleration
9.4.1 容忍和污点的基本概念
9.4.2 使用案例
9.4.3 基于Taint的驱逐
9.5 Affinity亲和力
9.5.1 Affinity的分类
9.5.2 Node Affinity
9.5.3 PodAffinity和PodAntiAffinity
9.5.4 示例1:同一个应用部署在不同的宿主机
9.5.5 示例2:同一个应用不同副本的固定节点
9.5.6 示例3:应用和缓存尽量部署在同一个域内
9.6 小结
第10章 Kubernetes资源管理
10.1 ResourceQuota
10.1.1 什么是资源配额
10.1.2 定义一个ResourceQuota
10.1.3 ResourceQuota的使用
10.2 LimitRange
10.2.1 LimitRange的用途
10.2.2 示例1:配置默认的requests和limits
10.2.3 示例2:配置requests和limits的范围
10.2.4 示例3:限制申请存储空间的大小
10.3 QoS
10.3.1 什么是服务质量保证
10.3.2 示例1:实现QoS为Guaranteed的Pod
10.3.3 示例2:实现QoS为Burstable的Pod
10.3.4 示例3:实现QoS为BestEffort的Pod
10.4 小结
第11章 Kubernetes安全入门
11.1 权限管理RBAC
11.1.1 RBAC的基本概念
11.1.2 Role和ClusterRole
11.1.3 RoleBinding和ClusterRoleBinding
11.1.4 对集群资源的权限控制
11.1.5 聚合ClusterRole
11.1.6 Role常用示例
11.1.7 RoleBinding常用示例
11.1.8 命令行的使用
11.1.9 K8s多租户权限管理实践
11.2 Network Policy
11.2.1 网络策略的使用
11.2.2 网络策略的注意事项
11.2.3 示例1:隔离中间件服务
11.2.4 示例2:服务发布限制于Ingress
11.3 小结
第4篇 高级篇
第12章 云原生存储Rook
12.1 Rook的安装
12.2 一键部署Ceph集群
12.3 安装Snapshot控制器
12.4 安装Ceph客户端工具和Dashboard
12.5 Ceph块存储的使用
12.5.1 创建StorageClass和Ceph的存储池
12.5.2 挂载测试
12.5.3 StatefulSet volumeClaimTemplates
12.6 共享型文件系统的使用
12.6.1 创建共享型文件系统
12.6.2 创建共享型文件系统的StorageClass
12.6.3 挂载测试
12.7 PVC扩容
12.7.1 扩容文件共享型PVC
12.7.2 扩容块存储
12.8 PVC快照
12.8.1 创建SnapshotClass
12.8.2 创建快照
12.8.3 使用快照恢复数据
12.8.4 数据校验
12.9 PVC克隆
12.10 测试数据清理
12.11 小结
第13章 中间件容器化
13.1 传统架构如何管理中间件集群
13.2 Kubernetes如何管理中间件集群
13.2.1 Operator和Helm的区别
13.2.2 Kubernetes管理中间件集群的流程
13.3 Operator的使用
13.3.1 使用Operator安装Redis集群
13.3.2 Redis集群一键扩容
13.3.3 集群清理
13.4 Helm的使用
13.4.1 安装Helm客户端
13.4.2 Helm客户端命令入门
13.4.3 安装Zookeeper集群至Kubernetes
13.4.4 安装Kafka集群至Kubernetes
13.4.5 Kafka集群扩容
13.4.6 删除Helm Release
13.5 小结
第5篇 运维篇
第14章 Kubernetes日志收集
14.1 有哪些日志需要收集
14.2 日志采集工具有哪些
14.2.1 ELK & EFK
14.2.2 Filebeat
14.2.3 新贵Loki
14.3 使用EFK收集控制台日志
14.3.1 部署Elasticsearch+Fluentd+Kibana
14.3.2 Kibana的使用
14.4 使用Filebeat收集自定义文件日志
14.4.1 创建Kafka和Logstash
14.4.2 注入Filebeat Sidecar
14.4.3 清理
14.5 Loki初体验
14.5.1 安装Loki Stack
14.5.2 Loki语法入门
14.6 小结
第15章 Kubernetes监控告警
15.1 Prometheus的架构介绍
15.2 Prometheus的安装
15.3 云原生和非云原生应用的监控流程
15.3.1 监控数据来源
15.3.2 什么是ServiceMonitor
15.3.3 ServiceMonitor找不到监控主机排查
15.3.4 云原生应用监控
15.3.5 非云原生监控Exporter
15.4 黑盒监控
15.5 Prometheus静态配置
15.6 Prometheus监控Windows(外部)主机
15.7 Prometheus语法PromQL入门
15.7.1 PromQL语法初体验
15.7.2 PromQL操作符
15.7.3 PromQL常用函数
15.8 Alertmanager告警入门
15.8.1 Alertmanager配置文件解析
15.8.2 Alertmanager路由规则
15.8.3 Alertmanager邮件通知
15.8.4 Alertmanager企业微信通知
15.8.5 自定义告警模板
15.9 Prometheus告警实战
15.9.1 PrometheusRule
15.9.2 告警通用配置步骤
15.10 小结
第16章 服务发布Ingress进阶
16.1 安装Ingress Nginx Controller
16.2 Ingress Nginx入门
16.3 Ingress Nginx域名重定向Redirect
16.4 Ingress Nginx前后端分离Rewrite
16.5 Ingress Nginx错误代码重定向
16.6 Ingress Nginx SSL
16.7 Ingress Nginx匹配请求头
16.8 Ingress Nginx基本认证
16.9 Ingress Nginx黑/白名单
16.9.1 配置黑名单
16.9.2 配置白名单
16.10 Ingress Nginx速率限制
16.11 使用Nginx实现灰度/金丝雀发布
16.11.1 创建v1版本
16.11.2 创建v2版本
16.11.3 Canary版本切入部分流量
16.11.4 测试灰度发布
16.12 环境清理
16.13 小结
第6篇 DevOps篇
第17章 DevOps实践
17.1 CI/CD介绍
17.1.1 持续集成(CI)
17.1.2 持续交付(CD)
17.1.3 持续部署(CD)
17.1.4 CI和CD的区别
17.2 Jenkins流水线介绍
17.2.1 什么是流水线
17.2.2 声明式流水线
17.2.3 脚本化流水线
17.3 声明式流水线的语法
17.3.1 sections
17.3.2 directives
17.3.3 parallel
17.4 Jenkinsfile的使用
17.4.1 Jenkinsfile初体验
17.4.2 Jenkinsfile进阶
17.5 DevOps平台建设
17.5.1 安装Jenkins
17.5.2 安装GitLab
17.5.3 安装Harbor
17.5.4 Jenkins凭证Credentials
17.5.5 配置Agent
17.5.6 Jenkins配置Kubernetes多集群
17.6 自动化构建Java应用
17.6.1 创建Java测试用例
17.6.2 定义Jenkinsfile
17.6.3 Jenkinsfile详解
17.6.4 定义Dockerfile
17.6.5 定义Kubernetes资源
17.6.6 创建Jenkins任务
17.7 自动化构建Vue/H5前端应用
17.7.1 定义Jenkinsfile
17.7.2 定义Dockerfile
17.7.3 定义Kubernetes资源
17.7.4 创建Jenkins Job
17.8 自动化构建Golang项目
17.8.1 定义Jenkinsfile
17.8.2 定义Dockerfile
17.8.3 创建Jenkins Job
17.9 自动触发构建
17.10 UAT及生产环境流水线设计
17.11 小结
第7篇 拓展篇
第18章 服务网格
18.1 服务网格概述
18.1.1 服务网格的基本概念
18.1.2 服务网格的功能
18.1.3 服务网格产品
18.2 Istio的基本概念
18.2.1 Istio的架构
18.2.2 Istio的组件
18.3 Istio的核心资源
18.3.1 VirtualService
18.3.2 DestinationRule
18.3.3 Gateway
18.4 安装Istio
18.4.1 使用Operator部署Istio
18.4.2 配置自动注入
18.4.3 可视化工具Kiali
18.4.4 Prometheus和Grafana
18.5 Istio流量治理实践
18.5.1 部署测试用例
18.5.2 Istio实现灰度部署
18.5.3 Istio实现AB测试
18.5.4 Istio注入延迟故障
18.5.5 Istio注入中断故障
18.5.6 Istio快速超时配置
18.5.7 Istio地址重写和重定向
18.5.8 Istio负载均衡算法
18.5.9 Istio熔断
18.6 小结
更新时间:2023-09-15 17:46:20