跳到正文 ChatGPT 说 · Jimmy Huang's Blog
← Seminar Week 4 Summary 学习 › C6001 › 2026 S1 › FIT5225 Cloud computing and security › Week 4 Container Orchestration › Seminar Week 4 Summary ChatGPT 说 ChatGPT 说 本页目录· 52 条 1. 本周 Seminar 总览 这周 Seminar 的核心主题是: 为什么只有容器还不够,为什么我们还需要“容器编排(Container Orchestration)” 。课件从上周的容器继续往前走,进入本周的 Docker Swarm 和 Kubernetes。课件本身的主线也很清楚:先讲“编排工具是什么、解决什么问题”,再讲 Docker Swarm,接着讲它背后的 Raft 共识算法 ,最后讲 Kubernetes 的基本架构,以及几个最重要的对象: Pod、Deployment、Service 。
老师在 transcript 里其实补了一个非常重要的背景: 容器虽然启动快、比 VM 轻量、适合微服务,但当请求量增加、服务变多、需要高可用和自动管理时,只靠手动管理容器会马上遇到问题 。比如:扩容后用户不知道新容器的地址、多个容器怎么协调、怎么自动监控健康状态、怎么保证系统一直可用。老师就是从这些“真实部署会遇到的麻烦”切入,带出为什么要学 orchestration。
还有一个很关键的学习导向:这周内容不是单纯记概念,而是要学会 带着场景做判断 。老师多次说,quiz 和 assignment 里会有这种“solution architecting”风格的问题:给你一个系统场景,你要根据假设、需求、性能、可扩展性来解释为什么选某种技术。也就是说,这周内容既是理论,也是后面作业和考核的思维基础。
2. 核心知识点总结 知识点1:为什么要从“容器”走向“容器编排” 这部分在讲什么:
容器本身很好用,但当你只有一两个容器时还能手动管理;一旦服务变多、流量增长、要高可用、要自动扩缩容,就必须用 orchestration 工具。课件把编排工具定义为:在大规模下整合和管理容器的框架,能帮助你做网络、扩缩容、服务发现、负载均衡、健康检查、自愈、安全、滚动更新等事情。
为什么重要:
因为“能跑起来”和“能稳定上线”不是一回事。老师举了一个很实际的例子:假设你原来一个 web 容器能处理 1000 个用户,现在突然来了 5000 个请求,你当然可以加更多容器,但马上会遇到一个大问题: 用户并不知道这些新容器的 IP 和端口 。所以你虽然扩容了,用户却不一定能访问到新增资源。这就是为什么需要编排系统帮你做服务发现和负载分发。
怎么理解:
你可以把它理解成:
当团队很小,大家自己沟通就行;团队大了,没有调度系统就会乱。
知识点2:Orchestrator 到底在做什么
本页目录 这部分在讲什么:
课件直接说,orchestrator 的工作是: 管理 cluster 里的主机和容器 ,它最核心的问题之一是 resource allocation / scheduling ,也就是“某个容器到底该被调度到哪个节点上跑”,并且还要持续跟踪节点状态和扩缩容。
因为资源不是无限的。每个节点有自己的 CPU、RAM、磁盘、网络状态。如果调度错了,可能会导致某个节点过载,另一个节点却空着。老师在口头解释里也补了:调度时其实就是在考虑系统状态,比如内存、CPU、资源可用性、健康情况等。
orchestrator 就是在回答这个问题。它不是瞎分,而是要根据“谁还有空、谁能跑、谁更合适”来分配。
知识点3:常见容器编排工具,以及 Docker Swarm 和 Kubernetes 的区别 课件列了几个例子: Kubernetes、Apache Mesos、Docker Swarm 。同时也比较了它们的扩展能力:
Kubernetes:适合复杂应用和企业级扩展
Swarm:更适合小中型集群
Mesos:可以做到更大规模的编排
因为不同工具不是“一个绝对好、一个绝对差”,而是 trade-off 。老师在 transcript 里特别说明了:
Swarm 偏简单易用,Kubernetes 偏强大通用。
知识点4:Docker Swarm 的基本结构 课件说明了 Docker Swarm 的几个基本点:
同时课件还讲了:在 Swarm 里,调度的最小单位不是裸容器,而是 service 。一个容器被包装进 service 后,就会有扩缩容、滚动更新、回滚等更高级的能力。
因为这说明 Swarm 的思路不是“你手动管一堆 container”,而是“你告诉系统要一个 service,它帮你维护期望状态”。
leader :真正做决策的 manager
service :Swarm 里更高层的管理对象
你不是只在管单个 container,而是在管“服务”。
知识点5:Raft 共识算法 课件说,Swarm manager 的高可用依赖 Raft consensus algorithm 。它的目标是:即使部分节点故障,系统仍然能让所有节点对“谁是当前 leader、当前状态是什么”达成一致。
节点状态: Follower / Candidate / Leader
时间被切成一个个 term
follower 超时没收到 leader heartbeat,就发起选举
candidate 给自己投票,并向其他节点请求投票
拿到多数票就变 leader;拿不到就进入下一个 term 重新选举
因为这是分布式系统里“多个管理节点怎么不打架”的基础。老师在 transcript 里也专门问了:如果有多个 manager,会不会各说各话、重复执行、意见不一致?Raft 就是为了解决这个问题。
知识点6:Kubernetes 是什么 因为 Kubernetes 是这周的重点工具,而且你们 applied session 主要也是围绕 Kubernetes。老师也说了,这门课正式会以 Kubernetes 为主。
你可以把 Kubernetes 理解成一个“更完整、更工业级的容器操作系统”。
你把应用交给它,它负责安排部署、扩容、恢复、联网、更新。
知识点7:Kubernetes 架构:control plane 和 worker nodes 1)Masters / Control Plane
这是你以后看 Kubernetes 图、做 lab、理解 YAML、排错时的基础。只要架构没搞懂,后面的 Pod / Deployment / Service 都会变成死记硬背。
control plane 负责“想”和“管”
worker node 负责“干”
知识点8:Pod 是 Kubernetes 里最基础的调度单位 应用要跑在 Kubernetes 上,得先被容器化,然后 包在 Pod 里 ,再通过声明式 manifest 部署。
Pod 是 Kubernetes 的 atomic unit of scheduling ,也就是最小调度单位。不是直接调度 container,而是调度 Pod 。
多个容器可以放在同一个 Pod 里,它们共享环境,比如内存/volume/网络栈,同一个 Pod 里的容器共享同一个 IP。
因为很多初学者会误以为“我把一个 container 直接丢进 Kubernetes 就好了”。不是的。 Kubernetes 不直接以 container 作为最小部署单位,而是以 Pod 为最小单位。
Pod 你可以理解为“容器的小房间 / 外壳 / 包装壳”。
Kubernetes 真正调度的是这个“房间”,容器住在里面。
知识点9:Pod 的共享特性、扩缩容方式和生命周期 Pod 本身不直接运行程序,它更像承载容器的 sandbox
同一个 Pod 内的容器共享网络和存储环境
同一个 Pod 内的容器通信走 localhost 端口
扩容时扩的是 Pod 的数量,不是把更多 container 塞进同一个 Pod
Pod 的部署是 atomic 的:要么整个 Pod 成功,要么整个失败
一个 Pod 只能被调度到一个 node 上
Pod 会死,死了 Kubernetes 会新建一个替代它,但新 Pod 会有新的 ID 和 IP 地址。
Pod 是“临时的、可替换的”,不是固定的服务器。
知识点10:Deployment 和 declarative model(声明式模型) 课件说 Deployment 是更高层的 Kubernetes 对象,它包着 Pod,给你提供:
scaling
zero-downtime updates
versioned rollbacks
而且 Kubernetes 很强调 desired state(期望状态) :
你在 YAML 里写“我要 2 个副本、镜像版本是某个值”,系统会不断 watch 当前状态,尽量让现实状态匹配你写的期望状态。
这是 Kubernetes 最核心的思想之一。你不是在说“现在给我执行这条命令”;你是在说“我希望系统长期保持成这样”。Kubernetes 会一直帮你纠偏。
知识点11:Service 的作用 Pod 会死,也会被替换,新 Pod 的 IP 会变
所以不能让客户端直接盯着 Pod 的 IP
Service 提供稳定的网络入口 ,它有稳定的 DNS 名称、IP 和端口
后端再把流量负载均衡到一组动态变化的 Pod 上
Service 通过 labels 和 label selectors 确定流量应该送到哪些 Pod。
答案就是: 不要让用户直接找 Pod,而是找 Service。
3. 老师强调的重点
重点1:做技术选择时,必须讲清楚“场景”和“假设” 老师一开始就反复追问学生:为什么要用容器?为什么快很重要?具体到什么业务场景?如果没有细节,就没法证明技术选择是合理的。老师甚至直接说了: “devil is in the details” ,而且 quiz 和 assignment 都会这样考。
因为老师不是随口一提,而是专门用很多追问把学生从“泛泛地说容器更快”逼到“说明具体业务约束”。这明显是在训练你后面答题的方式。
重点2:quiz / assignment 会考“solution architecting”风格的问题 老师明确说:测验和作业里会有这种题——同学的答案可以不同,但只要你的假设、推理、技术选择说得通,就可能是对的。
这已经是直接的考核提醒了。说明你不能只背定义,必须会“用”。
重点3:为什么容器还不够,为什么需要 orchestration 这是本周 Seminar 的主问题。你要是这个都没搞懂,后面所有知识点都会变成碎片。
重点4:Kubernetes、Swarm 不是只背名字,要理解各自 trade-off 这类“比较题”非常像 quiz / exam 题型。
重点5:Pod 是最小调度单位,不是 container 课件对这一点非常明确,而且老师在讲 Kubernetes 运行流程时也反复强调:应用要先容器化,再包进 Pod,再通过更高层对象部署。
这是 Kubernetes 基础中的基础,非常容易考,也非常容易混淆。
重点6:desired state 是 Kubernetes 的核心思想 课件专门用表格和例子解释了“当前状态 vs 期望状态”,Deployment 会一直观察并纠正状态。
这几乎是 Kubernetes 最核心的设计哲学,考试特别爱考这种“为什么它能自愈 / 扩容 / 更新”的本质原因。
4. transcript 里补充的重要信息
补充1:老师把 orchestration 跟“组队作业”强行类比了 这是课件里没有展开写的,但 transcript 里很重要。老师让大家把 cluster 想成 group assignment,然后提了很多典型问题:
同步问题
共识问题
任务分配
负载均衡
某个成员不干活
沟通障碍
版本不一致
老师的意思很明确: 分布式系统的问题其实和多人协作的问题很像 。这能帮你更直观地理解 cluster、orchestrator、consensus。
补充2:老师反复把“容器效率”跟 assignment 成绩联系起来 老师说过,容器设计得好,一个容器可能能扛很多请求;设计得差,甚至一个请求都处理不好。并且他直接提到 rubric 会看性能层次,HD 需要更高表现。
这点课件没展开,但 transcript 很重要:
补充3:Applied session 的内容也算教学内容 老师明确说:不会要求你死记命令,但至少应该能 解释命令在做什么 。
这说明你复习时不能只看 lecture slide,也要回看 applied 里做过的操作。
补充4:Docker Compose 适合管理多个容器,但它解决不了更高层的编排问题 老师讲得很清楚:Docker Compose 适合描述多个容器之间的依赖关系,但面对真正部署时的规模、可靠性、自动化、扩缩容、健康管理,还需要 orchestration。
补充5:老师强调“YAML 常用于部署和配置” 虽然这不是本周最核心内容,但老师在讲 Docker Compose 和 Kubernetes 时口头补充了 YAML 的常见用途:比起 JSON 更常被用于配置与部署描述。
5. 这周最可能要掌握的考点 / 作业相关点
高概率考点1:为什么需要容器编排
高概率考点2:Docker Swarm vs Kubernetes 对比
高概率考点3:Raft 的基本思路
高概率考点4:Kubernetes 架构基础
高概率考点5:Pod、Deployment、Service 三者关系
高概率考点6:desired state / declarative model 为什么 Kubernetes 能自动补副本、自动替换失败实例、自动保持配置一致。
作业相关隐含重点 老师多次把这周内容和 assignment 连在一起讲,所以我认为以下是 隐含重点 :
场景分析能力
技术选型理由
容器效率
微服务拆分合理性
可扩展性 / 可用性 / 自动化思维。
6. 我应该怎么学这周内容
第一步:先把“主问题”搞懂 先别急着背 Pod、Deployment、Raft。
扩容后地址变化
用户找不到新实例
多节点调度复杂
系统要高可用
要自动监控和恢复
要统一管理很多容器
第二步:再学两个工具的大图景
第三步:单独攻克 Raft Follower → 超时 → Candidate → 拉票 → 多数通过 → Leader
第四步:再学 Kubernetes 架构 control plane 负责管
node 负责跑
API server:中转中心
scheduler:分配任务
controller:盯状态
cluster store:存状态
第五步:最后学 Pod / Deployment / Service 应用先容器化
container 被包进 Pod
Pod 由 Deployment 管理
Service 给 Pod 提供稳定访问入口
这四步理顺了,Kubernetes 的核心框架就立住了。
这周内容怎么分类 容器编排、cluster、node、调度、扩缩容、服务发现
为什么需要 orchestration、Raft 为什么能解决 manager 冲突、desired state 的意义、Service 为什么必要
Swarm vs Kubernetes 的特点、Follower/Candidate/Leader、control plane 组件名、Pod/Deployment/Service 的职责
给场景选技术、解释为什么用 Pod 而不是直接部署 container、解释为什么需要 Service、说明扩容和高可用怎么实现
Apache Mesos、TLS 的延伸讨论、老师提到的一些研究方向
Orchestration 的必要性、Swarm/Kubernetes 对比、Raft 基本流程、Kubernetes 架构、Pod/Deployment/Service、desired state
最容易混淆的地方 很多人会以为 Kubernetes 直接调度 container。不是。
Pod 是运行单元;Deployment 是管理 Pod 的更高层对象。
4)Swarm 的 service vs Kubernetes 的 Pod/Deployment
两边都有“更高层抽象”,但术语不一样,别混成一套。
5)Docker Compose vs Orchestrator
Compose 是多容器定义和组织工具,不等于真正的集群编排平台。
学完后,你应该能回答这些问题 为什么容器编排是必要的?
Docker Swarm 和 Kubernetes 各自适合什么场景?
Raft 里 follower、candidate、leader 是怎么切换的?
什么是 term?为什么会重新选举?
Kubernetes 的 control plane 有哪些主要组件,它们做什么?
为什么 Kubernetes 不直接以 container 为最小调度单位?
Pod、Deployment、Service 三者是什么关系?
什么叫 desired state,Kubernetes 为什么能“自动修复”?
为什么 Pod 死了以后需要 Service 提供稳定入口?
如果一个应用请求暴涨,你会怎么解释为什么只靠手动加容器不够?
7. 给我一份简短复习清单
8. 如果我是初学者,你再用更简单的话解释一遍 上周你学的是“怎么把程序装进一个盒子里”,这个盒子就是 container 。
这周学的是: 如果我有很多盒子,而且它们要一起工作,我怎么管理它们?
但如果你突然用户变多了,要多开几个盒子,就会出现问题:
新盒子开在哪台机器上?
用户怎么知道去找哪个盒子?
某个盒子坏了怎么办?
想更新版本时,怎么不停机地换掉旧盒子?
有的机器忙,有的机器闲,怎么分配更合理?
所以我们要找一个“总调度员”,这就是 orchestrator 。
Docker Swarm manager 里会选一个 leader 来做决定。
为了防止多个 manager 乱指挥,它们用 Raft 来选领导。
Raft 大家平时先当普通成员
太久没人管,就有人出来竞选
谁拿到多数票,谁当 leader
如果票数不够,就再来一轮
Kubernetes control plane :负责指挥和安排
nodes :负责真正干活
Pod 在 Kubernetes 里,不是直接把单个 container 扔进去。
Kubernetes 先把 container 放进一个小壳子里,这个壳子叫 Pod 。
Deployment 你说“我想要 3 个 Pod,一直保持 3 个”,它就会帮你盯着。
Service 所以 Kubernetes 提供 Service ,相当于固定入口。
外部只找 Service,Service 再把流量转给当前活着的 Pod。
最后一句话总结 容器解决“怎么打包和运行应用”,容器编排解决“怎么大规模、稳定、自动地管理这些应用”。