AltSchool Of Engineering Tinyuka’24 第10月 第3周
Source: Dev.to
如果你错过了我们之前的课程,可以在这里补上。本周,我们深入探讨了 Terraform,了解它是什么、为何重要,以及它为何在现代云工程中如此强大。

容器技术与 Kubernetes 解释
1. 什么是容器?(以及为什么技术界如此热爱它们)
容器是一个轻量级、独立的包,包含了应用运行所需的一切:
- 应用代码
- 依赖项
- 运行时环境
- 系统库
可以把容器想象成一个密封的食品包装,无论你在拉各斯还是伦敦加热,食物的味道都完全相同。
真实案例
如果你的 Python 应用需要 Python 3.10、Flask 以及特定的系统库,容器可以确保它在以下环境中以相同方式运行:
- 你的笔记本电脑
- 团队成员的机器
- 生产环境
- 云平台
“在我的机器上可以运行”的日子已经结束。
2. 容器技术(支撑整个生态系统的组成)
a) 容器引擎 / 运行时
负责实际运行容器的底层组件。
containerd(Docker 和 Kubernetes 使用)CRI‑O(许多 Kubernetes 环境使用的轻量级运行时)runc(根据 OCI 规范执行容器)
b) 容器客户端工具
开发者交互的工具。
- Docker CLI →
docker build、docker run - Podman → 无守护进程的 Docker 替代方案
- Buildah → 用于构建镜像
- Skopeo → 用于管理注册表中的容器镜像
c) 容器镜像仓库
存放和共享容器镜像的场所。
- Docker Hub
- GitHub Container Registry
- AWS ECR
- GCP Container Registry
- Azure Container Registry
这些仓库的功能类似于“应用商店”,但面向基础设施。
3. 容器运行时(引擎的内部实现)
容器运行时负责:
- 创建容器
- 执行容器
- 管理容器生命周期
- 强制安全隔离
Kubernetes 不再直接管理 Docker;它通过 容器运行时接口(CRI) 与 containerd、CRI‑O 或其他兼容 CRI 的实现通信。这让 Kubernetes 更加模块化、更快且云供应商无关。
4. 容器编排(为何需要比 Docker 更强大的东西)
运行单个容器很容易,跨多台服务器运行数百甚至数千个容器则不然。编排工具负责:
- 自动化部署
- 容器的水平扩缩容
- 滚动升级与回滚
- 负载均衡
- 容器自愈
- 监控容器健康状态
主要平台:
- Kubernetes(行业标准)
- Docker Swarm
- HashiCorp 的 Nomad
Kubernetes 当之无愧。
5. Kubernetes(K8s):云的操作系统
Kubernetes 将容器视作微型工作节点,并智能地协调它们,确保应用在高流量下仍能平稳、可靠且可扩展地运行。
企业为何钟爱 Kubernetes
- 高度可扩展
- 兼容任何云平台(AWS、GCP、Azure、DigitalOcean)
- 自愈能力
- 自动化部署
- 高可用性
- 庞大的社区与生态系统
从 Netflix、Spotify 到各大银行和电信运营商,Kubernetes 为全球关键业务系统提供动力。

6. Kubernetes 集群组件(Kubernetes 的实际工作方式)
A. 控制平面组件(“大脑”)
-
API Server – 所有 Kubernetes 操作的入口;每一次 CLI、UI 或自动化请求都要经过它。
示例:kubectl apply -f app.yaml首先会发送请求到 API Server。 -
etcd – 分布式键值存储,保存集群状态(Kubernetes 的“记忆”)。
-
Scheduler – 根据 CPU、内存、节点容量、亲和性规则等,将 Pod 分配到合适的工作节点。
-
Controller Manager – 运行长期控制循环,如节点控制器、复制控制器、端点控制器和服务账户令牌控制器。
B. 工作节点组件(容器实际运行的地方)
-
Kubelet – 运行在每个工作节点上的代理,确保容器按照指令运行并与容器运行时通信。
-
Kube‑Proxy – 处理跨节点的网络,保证服务与 Pod 之间的路由。
-
容器运行时 – 实际启动容器(例如
containerd)。
7. 整体协作示例 – 工作流
部署一个使用 Flask 的容器化应用到 Kubernetes:
# 1. 编写部署清单(deployment.yaml)
kubectl apply -f deployment.yaml # 2. 向 API Server 发送请求
# 3. Scheduler 选出最佳工作节点
# 4. Kubelet 告诉容器运行时启动容器
# 5. Kube‑Proxy 设置网络与负载均衡
# 6. Controllers 维持期望的副本数量
# 7. 若 Pod 失败 → Kubernetes 自动重启它
这种自动化与智能化使 Kubernetes 成为云原生计算的支柱。
8. 为什么容器 + Kubernetes 如今如此重要
它们帮助组织:
- 更快部署
- 降低成本
- 提升可靠性
- 轻松扩展
- 标准化开发流程
- 简化多云策略
采用该技术栈的行业包括金融科技、电商、银行、电信、能源、政府和医疗。

容器改变了我们打包应用的方式。
Kubernetes 改变了我们在规模上运行它们的方式。
二者共同构成了现代云基础设施的基石,为我们日常使用的应用提供动力。