请使用支持现代 CSS 与 JavaScript 的浏览器播放课件
CCIoT · 5.1

体验容器云

提供镜像,让平台运行容器

VER. 2608 Built with impress.js

学习目标

镜像到节点、Pod 启动、Service 转发

  1. 01比较虚拟机的独立客户操作系统与容器共享宿主内核的运行方式
  2. 02说明镜像、运行时和镜像仓库的角色
  3. 03说明控制平面、节点、Pod 和工作负载分别接收、调度、运行或声明什么
  4. 04解释 Service 如何为短暂的 Pod 提供稳定入口
  5. 05从镜像入库开始,创建工作负载和 Service,记录响应并回收本次资源
  6. 06按镜像拉取、Pod 就绪、Service 后端、端口和应用响应定位访问失败的位置
2/23
LEARNING OBJECTIVES

容器云:从云主机到应用运行环境

应用不必每次都携带一套完整的客户操作系统

云主机

提供虚拟 CPU、内存、磁盘和网卡

应用依赖一套完整的客户操作系统

容器云

提供可调度的应用运行环境

应用及依赖共享宿主操作系统内核

3/23
CONTAINER CLOUD

容器与虚拟机:隔离层次不同

容器共享宿主内核,性能差异取决于工作负载和平台条件

虚拟机

以虚拟硬件承载完整客户操作系统,每台虚拟机有自己的客户操作系统内核

容器

通常与宿主共享内核,并用进程隔离和 CPU、内存等资源限制封装应用

共同点

都需要资源限制、网络、存储和权限配置才能稳定运行

判断条件

启动速度和资源占用取决于工作负载、镜像、节点和平台实现

虚拟机与容器在宿主资源上形成不同隔离层级的对比
Takeaway

“更快、更省资源”是条件性比较

4/23
RUNTIME BOUNDARY

练习:哪些证据指向容器运行环境?

Exercise
场景请先判断需要找到的证据
一台完整 Linux 操作系统虚拟机虚拟机/容器/证据不足虚拟硬件、客户操作系统、运行时或资源边界
共享宿主内核的 Web 服务进程组虚拟机/容器/证据不足应用封装、宿主内核和资源限制
远程桌面连接另一台主机虚拟机/容器/证据不足远程访问之外,是否有运行环境封装证据?
同一系统中普通应用虚拟机/容器/证据不足是否存在容器运行时和独立资源边界?
5/23
BOUNDARY JUDGMENT

镜像提供内容,运行时启动容器

镜像、容器和节点不是同一个对象

分发:镜像上传仓库 → 节点拉取

运行:运行时启动容器 → 应用响应

镜像

封装应用、依赖、文件系统层和启动信息,可被重复分发

容器

镜像在某个节点上启动后的运行实例

运行时

创建、启动、停止和删除容器,并与内核的隔离机制协作

镜像仓库

存储、标记、分发镜像,并控制谁可以读取或推送

Takeaway

上传镜像成功只证明仓库对象存在

6/23
IMAGE AND RUNTIME

镜像让运行环境可复制

同一镜像可把代码和依赖带到其他节点,但仍要匹配版本、架构、权限

应用内容

代码、静态文件和启动命令

运行依赖

库、配置和基础文件系统层

运行条件

架构、端口、权限和资源限制

构建或取得镜像 → 标记 → 推送 → 拉取 → 启动

Takeaway

可移植性意味着运行环境更容易复制

7/23
REPEATABLE ENVIRONMENT

练习:哪一步失败,先检查哪个对象?

Exercise
现象检查对象判断依据
镜像推送被拒绝仓库/身份/其他账号、组织、标签
节点拉取镜像失败仓库/网络/架构/其他镜像地址、连通性
容器立即退出启动命令/应用/其他进程状态、启动命令
容器运行但端口无响应应用/端口/网络/其他监听、映射
Takeaway

沿着仓库、节点运行时、容器进程和应用端口依次排查

8/23
IMAGE CHAIN

Kubernetes 如何组织集群服务

控制平面维护期望状态,工作节点承载实际运行

声明:提交工作负载 → 控制平面协调

运行:控制平面调度 → 工作节点承载 Pod → 容器运行

控制平面

接收声明、维护集群状态、协调调度与变化

工作节点

提供处理器 CPU、内存、网络和存储,实际承载 Pod

容器组 Pod

Kubernetes 最小的调度与运行单元,包含一个或多个协同容器

Takeaway

提交镜像后,控制平面选择节点、创建 Pod,并在 Pod 失败时补回副本

9/23
KUBERNETES

工作负载声明状态,控制平面调度 Pod

Pod 是运行单元,不是长期稳定的用户入口

工作负载对象,例如 Deployment

声明镜像、副本数量和更新方式

平台按期望状态创建或替换 Pod

工作节点与 Pod

节点提供运行资源

Pod 在节点上共享网络等运行上下文并承载容器

Takeaway

工作负载描述期望状态,Pod 是该状态在节点上的一次运行结果

10/23
OBJECT ROLES

练习:这项工作属于哪个对象?

Exercise
工作控制平面/节点/Pod/工作负载)职责证据
决定应用放在哪个节点填写调度与状态证据
提供 CPU 和内存运行容器填写实际资源证据
封装一个或多个协同容器填写运行单元与协同证据
声明运行三个副本填写期望状态/副本证据
11/23
CLUSTER ROLES

Service 为变化中的 Pod 提供稳定入口

用户访问 Service 的固定名称或地址

工作负载

声明应用副本和 Pod 的期望状态;平台据此维护 Pod

Pod

是当前运行单元,可能因为失败或更新而被替换

Service

本节示例中,Service 用标签选择器找到后端 Pod,保留一个访问入口并把请求转发过去

入口类型

入口可以只供集群内使用,也可以通过节点端口或外部负载均衡让集群外访问

Takeaway

Pod 可以变化,Service 让访问者不必跟着 Pod 地址变化

12/23
SERVICE PATH

应用可访问需要四类证据

理解整条访问链

1. 控制平面

工作负载创建成功,对象已经提交

2. 运行面

Pod 已调度、容器运行,就绪

3. 网络面

Service 后端,端口和访问配置正确

4. 应用面

访问入口返回目标服务的实际响应

Takeaway

访问链可用需要四类证据齐全

13/23
ACCESS EVIDENCE

练习:Service 为何仍不可访问?

Exercise
现象检查对象判断依据
工作负载运行但 Service 无后端选择器/Pod 就绪/其他后端对象和状态证据
Service 有后端但连接被拒绝服务端口/容器端口/其他转发目标和应用监听证据
Pod 已就绪且 Service 有后端但外部访问失败外部网络路径/其他访问类型、路由或防火墙证据
浏览器有响应但页面错误应用内部状态/依赖服务/其他日志、配置或业务响应证据
14/23
ACCESS DIAGNOSIS

课堂演示从已验证的镜像和集群开始

预构建环境免安装,课堂观察镜像拉取、Pod 就绪、Service 后端、应用响应

  1. 01课前检查镜像标签、仓库权限、集群控制平面和工作节点
  2. 02准备最小网络,写清入口只在集群内可用还是允许从外部访问
  3. 03保留可恢复环境和当前状态证据,不在课件中保存真实账号和固定地址
  4. 04课堂只改变本次演示创建的对象,结束时按清单回收
Takeaway

安装步骤可以课前完成,镜像、节点、网络和权限仍要逐项核对

15/23
DEMO PREPARATION

观察一条从镜像到应用响应的部署链

逐步确认镜像能拉取、Pod 已就绪、Service 有后端以及入口返回目标页面

Case
TEXT
构建或取得镜像并推送到仓库
→ 创建工作负载
→ 观察 Pod 调度与就绪
→ 创建 Service
→ 访问应用并记录响应
→ 回收本次创建的资源
01

内容

确认镜像版本和仓库权限

02

运行

核对工作负载、Pod、节点和资源状态

03

入口

核对 Service、端口、网络和应用响应

04

收尾

删除临时对象,确认没有遗留资源

16/23
DEPLOYMENT SEQUENCE

练习:每项证据分别证明什么?

仓库存在 → 节点可拉取 → Pod 就绪 Ready → Service 有后端 → 入口响应

Exercise
观察结果请先判断它能证明什么还需要继续核对什么
镜像出现在仓库仓库中存在镜像对象/其他节点是否能拉取、工作负载是否运行
Pod 已就绪运行单元满足就绪条件/其他Service、端口和外部网络
Service 有后端选择器找到了运行单元/其他端口映射、应用监听和入口
浏览器得到响应这条入口链暂时可用/其他数据、权限和集群全局健康
17/23
DEPLOYMENT EVIDENCE

应用打开后,还要更新、恢复、回收资源

镜像、Pod、Service 和数据卷不会随着一个删除动作一起消失

交付链:镜像 → 仓库 → 工作负载 → Pod → Service → 应用响应

回收链:删除临时对象,核对卷、备份和其他资源

镜像生命周期

构建、标记、扫描、发布、废弃和删除

运行生命周期

调度、启动、就绪、替换、失败和恢复

服务生命周期

选择后端、映射端口、配置访问边界和撤销入口

数据生命周期

卷、备份、恢复和删除都要单独管理,不能用删除 Pod 代替

Takeaway

删除工作负载不等于删除镜像、卷、网络和备份

18/23
CONTAINER LIFECYCLE

容器轻量,也要维护镜像、平台、数据

镜像要修补漏洞,平台要维护权限和网络,有状态应用还要备份和恢复数据

镜像维护

检查来源、版本、漏洞、权限和架构

平台维护

管理身份与权限、配额、网络策略、日志和监控

数据维护

为有状态应用设计备份、恢复和回收

Takeaway

团队要写清谁更新镜像、谁维护集群权限和网络、谁备份并恢复数据

19/23
GOVERNANCE

练习:哪个对象还需要单独处理?

Exercise
状态不能直接推出什么仍需处理的对象
镜像可以拉取安全/合规/其他来源、漏洞、权限和版本
Pod 正在运行数据保留/业务可用/其他卷、备份和恢复策略
Service 可以访问应用功能/数据正确/其他依赖服务、日志和业务验证
工作负载已删除资源已全部回收/其他Service、卷、网络和临时集群资源
Takeaway

验收要记录应用响应,处理镜像、权限、卷和临时资源

20/23
RESPONSIBILITY JUDGMENT

练习:验收一次容器应用交付

从一份镜像开始写出可访问、可诊断、可回收的交付记录

  1. 01用客户操作系统、共享内核和资源边界解释为什么选择容器
  2. 02画出镜像、仓库、节点运行时与容器之间的分发和启动路径
  3. 03用工作负载、控制平面、工作节点和 Pod 写出期望状态怎样变成实际运行
  4. 04画出客户端、Service、就绪 Pod 与容器端口,并诊断一处不可访问故障
  5. 05分别写出镜像存在、Pod 就绪、Service 有后端和入口响应能够证明什么
  6. 06列出工作负载、Service、镜像、卷、权限和临时资源的回收责任
21/23
SECTION REVIEW

本节思维导图

22/23
MIND MAP

本节问题

  1. 01虚拟机为什么有自己的客户操作系统内核,而容器通常共享宿主内核?
  2. 02镜像、容器、运行时和镜像仓库如何分工?
  3. 03收到“运行三个副本”的声明后,控制平面、工作节点、Pod 要做什么?
  4. 04为什么 Service 可以比 Pod 地址更适合作为应用入口?
  5. 05如何沿着镜像、部署、暴露、验证和回收完成一次容器云演示?
  6. 06Pod 已经运行后,团队为什么还要分别维护镜像、权限、网络和数据卷?
23/23
QUESTIONS