关于本书的内容有任何问题,请联系 初美呈
项目1 从Docker转向Kubernetes 1 【课堂学习目标】 2 知识目标 2 技能目标 2 素养目标 2 任务1.1 认识与安装Docker 2 任务要求 2 相关知识 2 1.1.1 应用程序部署方式的演变 2 1.1.2 什么是Docker 4 1.1.3 Docker架构 4 1.1.4 Docker版本 5 任务实现 6 任务1.1.1 安装Docker Engine 6 任务1.1.2 了解docker命令的基本用法 8 任务1.1.3 运行一个容器 10 任务1.2 掌握Docker的基本操作方法 10 任务要求 10 相关知识 11 1.2.1 Docker镜像基础知识 11 1.2.2 Docker容器基础知识 13 1.2.3 Docker注册中心与仓库 15 任务实现 17 任务1.2.1 镜像和容器的基本操作 17 任务1.2.2 自建Docker注册中心 19 任务1.3 构建镜像并将应用程序容器化 20 任务要求 20 相关知识 21 1.3.1 镜像的构建 21 1.3.2 应用程序镜像的内容 23 1.3.3 应用程序容器化的基本步骤 23 任务实现 将应用程序容器化 24 任务1.4 转向Kubernetes 28 任务要求 28 相关知识 28 1.4.1 什么是Kubernetes 28 1.4.2 为什么要使用Kubernetes 29 1.4.3 Kubernetes的主要特性 30 1.4.4 Kubernetes与云原生 30 任务实现 31 任务1.4.1 了解Kubernetes的应用 31 任务1.4.2 了解Kubernetes在国内企业中的实际应用 32 项目小结 33 课后练习 34 项目实训 35 实训1 安装Docker Engine并进行镜像和容器的基本操作 35 实训2 对Node.js Web应用程序进行容器化 35 项目2 部署Kubernetes集群 36 【课堂学习目标】 36 知识目标 36 技能目标 36 素养目标 36 任务2.1 创建Kubernetes集群 36 任务要求 36 相关知识 37 2.1.1 Kubernetes集群的组件 37 2.1.2 控制平面组件 38 2.1.3 工作节点组件 39 2.1.4 功能插件 40 2.1.5 Kubernetes部署方式 40 2.1.6 kubeadm工具 41 2.1.7 高可用Kubernetes集群 41 任务实现 42 任务2.1.1 规划Kubernetes集群 42 任务2.1.2 准备Kubernetes集群安装环境 43 任务2.1.3 部署Kubernetes集群节点 47 任务2.1.4 安装Pod网络插件 50 任务2.1.5 测试Kubernetes集群 52 任务2.1.6 使用containerd命令行工具crictl 52 任务2.2 部署和使用Kubernetes Dashboard 53 任务要求 53 相关知识 53 2.2.1 Kubernetes集群资源管理方式 53 2.2.2 Kubernetes Dashboard的功能 54 任务实现 54 任务2.2.1 安装Kubernetes Dashboard 54 任务2.2.2 使用Kubernetes Dashboard 56 项目小结 59 课后练习 60 项目实训 61 实训1 使用kubeadm工具部署三节点Kubernetes集群 61 实训2 安装和使用Kubernetes Dashboard 61 项目3 熟悉Kubernetes基本操作 62 【课堂学习目标】 62 知识目标 62 技能目标 62 素养目标 62 任务3.1 理解和使用Kubernetes对象 62 任务要求 62 相关知识 63 3.1.1 什么是Kubernetes对象 63 3.1.2 Kubernetes对象的规约和状态 64 3.1.3 描述Kubernetes对象 64 3.1.4 Kubernetes对象的管理方法 65 3.1.5 对象的名称和UID 66 3.1.6 标签和注解 67 3.1.7 名称空间 68 任务实现 69 任务3.1.1 创建Kubernetes对象 69 任务3.1.2 操作对象的标签 71 任务3.1.3 操作名称空间 72 任务3.2 使用kubectl命令 73 任务要求 73 相关知识 73 3.2.1 kubectl命令的基本用法 73 3.2.2 kubectl常用子命令 74 3.2.3 kubectl命令支持的资源类型 75 3.2.4 kubectl命令支持的输出格式 76 任务实现 76 任务3.2.1 熟悉kubectl命令的用法 76 任务3.2.2 使用kubectl命令辅助生成YAML配置文件 77 任务3.3 创建和管理Pod 79 任务要求 79 相关知识 79 3.3.1 什么是Pod 79 3.3.2 Pod与容器 79 3.3.3 Pod的定义 81 3.3.4 Pod的生命周期 82 3.3.5 Pod的健康检查机制 83 任务实现 84 任务3.3.1 创建多容器Pod 84 任务3.3.2 为Pod及其容器设置资源配额 86 任务3.3.3 实现Pod容器的健康检查 88 项目小结 89 课后练习 90 项目实训 91 实训1 操作指定名称空间中对象的标签 91 实训2 创建一个多容器Pod并进行测试 91 项目4 部署和运行应用程序 92 【课堂学习目标】 92 知识目标 92 技能目标 92 素养目标 92 任务4.1 使用Deployment运行无状态应用程序 93 任务要求 93 相关知识 93 4.1.1 工作负载资源与控制器 93 4.1.2 ReplicationController、ReplicaSet和Deployment 94 4.1.3 Deployment的应用场景 94 4.1.4 Deployment的基本用法 95 任务实现 95 任务4.1.1 创建Deployment 95 任务4.1.2 测试Deployment的自动修复功能 99 任务4.1.3 更新Deployment 99 任务4.1.4 回滚Deployment 101 任务4.1.5 暂停、恢复Deployment的更新 103 任务4.1.6 扩缩容Deployment 104 任务4.2 使用DaemonSet部署集群守护进程集 105 任务要求 105 相关知识 105 4.2.1 什么是DaemonSet 105 4.2.2 DaemonSet的应用场景 105 任务实现 106 任务4.2.1 使用DaemonSet部署日志收集守护进程集 106 任务4.2.2 管理DaemonSet部署的集群守护进程集 109 任务4.3 运行一次性任务与定时任务 110 任务要求 110 相关知识 111 4.3.1 Job与一次性任务 111 4.3.2 CronJob与定时任务 111 任务实现 112 任务4.3.1 使用Job运行一次性任务 112 任务4.3.2 使用CronJob运行定时任务 114 项目小结 115 课后练习 116 项目实训 116 实训1 使用Deployment运行Apache服务 116 实训2 使用DaemonSet在所有工作节点上部署nginx 117 项目5 发布应用程序 118 【课堂学习目标】 118 知识目标 118 技能目标 118 素养目标 119 任务5.1 使用Service发布应用程序 119 任务要求 119 相关知识 119 5.1.1 什么是Service 119 5.1.2 通过Endpoints理解Service的工作机制 120 5.1.3 Service的负载均衡机制 123 5.1.4 Service的服务发现机制 125 5.1.5 定义Service 126 5.1.6 Service类型 126 5.1.7 无头Service 128 5.1.8 多端口Service 129 任务实现 129 任务5.1.1 验证Kubernetes的服务发现机制 129 任务5.1.2 使用Service对外发布集群中的应用程序 130 任务5.1.3 使用Service发布前后端应用程序 132 任务5.2 使用Ingress发布应用程序 136 任务要求 136 相关知识 137 5.2.1 什么是Ingress 137 5.2.2 定义Ingress 138 5.2.3 什么是Ingress控制器 138 任务实现 139 任务5.2.1 部署nginx Ingress控制器 139 任务5.2.2 使用Ingress对外发布应用程序 142 任务5.3 实现灰度发布与蓝绿发布 146 任务要求 146 相关知识 146 5.3.1 什么是灰度发布 146 5.3.2 什么是蓝绿发布 147 5.3.3 Kubernetes的灰度发布和蓝绿发布解决方案 148 5.3.4 nginx Ingress的灰度发布和蓝绿发布方法 148 任务实现 149 任务5.3.1 使用nginx Ingress实现灰度发布 149 任务5.3.2 使用nginx Ingress实现蓝绿发布 154 项目小结 155 课后练习 156 项目实训 157 实训1 使用Service发布Apache服务并考察Service工作机制 157 实训2 部署nginx Ingress控制器并使用Ingress发布Apache服务 157 项目6 管理存储和配置信息 158 【课堂学习目标】 158 知识目标 158 技能目标 158 素养目标 159 任务6.1 配置和使用基本存储 159 任务要求 159 相关知识 159 6.1.1 什么是卷 159 6.1.2 卷的类型 159 任务实现 160 任务6.1.1 使用EmptyDir卷存储数据 160 任务6.1.2 使用HostPath卷挂载宿主机文件 161 任务6.1.3 使用NFS卷挂载NFS共享目录 163 任务6.2 配置和使用持久卷 165 任务要求 165 相关知识 165 6.2.1 PV与PVC的持久化存储机制 165 6.2.2 PV的定义 166 6.2.3 PVC的定义 168 6.2.4 PV和PVC的生命周期 169 6.2.5 StorageClass 169 任务实现 172 任务6.2.1 创建基于NFS的PV 172 任务6.2.2 基于PVC使用PV 173 任务6.2.3 基于StorageClass实现动态卷制备 175 任务6.3 管理配置信息和敏感信息 180 任务要求 180 相关知识 180 6.3.1 什么是ConfigMap 180 6.3.2 创建ConfigMap 180 6.3.3 使用ConfigMap 182 6.3.4 什么是Secret 183 6.3.5 创建Secret 184 6.3.6 使用Secret 185 任务实现 186 任务6.3.1 使用ConfigMap为Tomcat提供配置文件 186 任务6.3.2 使用Secret为MongoDB提供配置文件 188 项目小结 189 课后练习 190 项目实训 191 实训1 通过PVC使用基于NFS的PV 191 实训2 使用默认StorageClass基于NFS实现动态卷制备 191 项目7 Kubernetes调度 192 【课堂学习目标】 192 知识目标 192 技能目标 192 素养目标 192 任务7.1 使用StatefulSet运行有状态应用程序 193 任务要求 193 相关知识 193 7.1.1 什么是StatefulSet 193 7.1.2 StatefulSet的特点 194 7.1.3 StatefulSet的组件 194 任务实现 196 任务7.1.1 使用StatefulSet部署MySQL主从集群 196 任务7.1.2 扩缩容StatefulSet 203 任务7.2 实现水平自动扩缩容 204 任务要求 204 相关知识 204 7.2.1 什么是HPA 204 7.2.2 如何定义HPA 205 7.2.3 什么是Metrics Server 206 任务实现 207 任务7.2.1 部署Metrics Server 207 任务7.2.2 通过HPA实现nginx的自动扩缩容 209 任务7.3 管理Pod的调度 212 任务要求 212 相关知识 213 7.3.1 Kubernetes调度概述 213 7.3.2 Pod的定向调度 213 7.3.3 亲和性与反亲和性调度 214 7.3.4 污点与容忍度 217 任务实现 219 任务7.3.1 将应用程序部署在特定的节点上 219 任务7.3.2 将同一应用程序部署到不同的节点上 220 任务7.3.3 将关联的应用程序部署到同一节点上 221 任务7.3.4 示范污点和容忍度的使用 223 项目小结 224 课后练习 225 项目实训 226 实训1 使用StatefulSet运行nginx并进行扩缩容 226 实训2 演示通过污点和容忍度设置驱逐Pod 227 项目8 高效管理应用程序的部署 228 【课堂学习目标】 228 知识目标 228 技能目标 228 素养目标 228 任务8.1 使用Helm简化应用程序的部署和管理 229 任务要求 229 相关知识 229 8.1.1 什么是Helm 229 8.1.2 Helm是如何工作的 229 8.1.3 Chart结构 230 8.1.4 Helm的基本用法 231 任务实现 232 任务8.1.1 安装和配置Helm 232 任务8.1.2 熟悉Helm的基本操作 233 任务8.1.3 使用Helm在Kubernetes中部署Kafka 238 任务8.2 使用Kustomize定制应用程序的部署配置 241 任务要求 241 相关知识 242 8.2.1 Kustomize的特性和应用场景 242 8.2.2 Kustomization文件 242 8.2.3 Kustomize的基本用法 244 任务实现 245 任务8.2.1 使用Kustomize管理Secret 245 任务8.2.2 为Kubernetes对象设置贯穿性字段 246 任务8.2.3 使用Kustomize组合Kubernetes资源 248 任务8.2.4 使用Kustomize定制Kubernetes资源 249 任务8.2.5 使用Kustomize管理不同环境的应用程序配置 251 项目小结 253 课后练习 254 项目实训 254 实训1 使用Helm在Kubernetes中部署MongoDB 254 实训2 使用Kustomize管理不同环境的应用程序配置 255 项目9 持续集成和持续部署 256 【课堂学习目标】 256 知识目标 256 技能目标 256 素养目标 257 任务9.1 在Kubernetes中部署开发的应用程序 257 任务要求 257 相关知识 257 9.1.1 将应用程序部署到Kubernetes的基本流程 257 9.1.2 开源的企业级Docker Registry项目Harbor 258 任务实现 258 任务9.1.1 基于Harbor自建企业级Docker注册中心 258 任务9.1.2 在Kubernetes集群中使用来自Harbor的镜像 262 任务9.1.3 将开发的应用程序部署到Kubernetes 264 任务9.2 搭建云原生应用程序的CI/CD平台 268 任务要求 268 相关知识 269 9.2.1 DevOps的概念 269 9.2.2 CI/CD的概念 269 9.2.3 CI/CD的主要工具 270 9.2.4 CI/CD平台的组建思路 270 任务实现 271 任务9.2.1 规划CI/CD平台 271 任务9.2.2 部署GitLab服务器 271 任务9.2.3 部署Jenkins服务器 275 任务9.2.4 通过Jenkins集中管理凭据 279 任务9.3 使用Jenkins的Maven项目实施CI/CD 281 任务要求 281 相关知识 281 9.3.1 Jenkins的项目类型 281 9.3.2 Maven项目的CI/CD流程 282 任务实现 282 任务9.3.1 准备Maven项目的实施环境 282 任务9.3.2 新建Maven项目实施CI/CD 284 任务9.3.3 通过GitLab自动触发项目构建和部署 289 任务9.4 使用Jenkins的流水线项目实施CI/CD 292 任务要求 292 相关知识 293 9.4.1 Jenkins的流水线语法 293 9.4.2 在Jenkins中使用流水线 294 任务实现 294 任务9.4.1 新建流水线项目实施CI/CD 294 任务9.4.2 实施代码分支的CI/CD 297 任务9.5 在Kubernetes中动态创建代理节点实施CI/CD 304 任务要求 304 相关知识 304 9.5.1 Jenkins的主节点和代理节点 304 9.5.2 在Kubernetes中使用Pod作为代理节点 305 任务实现 305 任务9.5.1 在Jenkins中配置Pod代理 305 任务9.5.2 新建Jenkins项目测试Pod代理的动态创建 309 项目小结 312 课后练习 313 项目实训 314 实训1 手动将Python应用程序部署到Kubernetes 314 实训2 搭建云原生应用程序的CI/CD平台 315 实训3 使用Jenkins的流水线项目实施CI/CD 315
本书基于openEuler(22.03 LTS SP3版)国产操作系统和OpenStack(Train版)云计...
本书全面、系统地讲解Kubernetes的基础知识和运维管理方法。本书共9个项目,包括从Docker转向Kub...
本书基于国产操作系统openEuler和云基础架构平台OpenStack编写,主要介绍云基础架构平台的部署、运...
根据高职高专教育的培养目标、特点和要求,本书由浅入深、全面系统地讲解了云计算技术的基础知识。全书共6章,内容包...
本书旨在使读者掌握服务器虚拟化平台的部署和运维方法。本书共9个项目。前7个项目主要以业界领先的VMware v...
随着云计算技术的飞速发展,企业对容器编排和管理的需求日益增长,Kubernetes作为领先的开源容器编排平台,...
...
本书详细介绍openEuler的基本概念和基础操作。全书共11章,分别为绪论、认识openEuler、Shel...
本书以鲲鹏应用开发与迁移为主线,分为3篇,包括概述篇、开发篇和迁移篇。本书共8章,分别为鲲鹏生态与解决方案、应...
本书以Red Hat Enterprise Linux 9.2/CentOS Stream 9为平台,遵从学生...
我要评论