AltSchool Of Engineering Tinyuka’24 第10月 第3周

发布: (2025年12月14日 GMT+8 04:46)
7 min read
原文: Dev.to

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 builddocker run
  • Podman → 无守护进程的 Docker 替代方案
  • Buildah → 用于构建镜像
  • Skopeo → 用于管理注册表中的容器镜像

c) 容器镜像仓库

存放和共享容器镜像的场所。

  • Docker Hub
  • GitHub Container Registry
  • AWS ECR
  • GCP Container Registry
  • Azure Container Registry

这些仓库的功能类似于“应用商店”,但面向基础设施。

3. 容器运行时(引擎的内部实现)

容器运行时负责:

  • 创建容器
  • 执行容器
  • 管理容器生命周期
  • 强制安全隔离

Kubernetes 不再直接管理 Docker;它通过 容器运行时接口(CRI)containerdCRI‑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. 控制平面组件(“大脑”)

  1. API Server – 所有 Kubernetes 操作的入口;每一次 CLI、UI 或自动化请求都要经过它。
    示例: kubectl apply -f app.yaml 首先会发送请求到 API Server。

  2. etcd – 分布式键值存储,保存集群状态(Kubernetes 的“记忆”)。

  3. Scheduler – 根据 CPU、内存、节点容量、亲和性规则等,将 Pod 分配到合适的工作节点。

  4. Controller Manager – 运行长期控制循环,如节点控制器、复制控制器、端点控制器和服务账户令牌控制器。

B. 工作节点组件(容器实际运行的地方)

  1. Kubelet – 运行在每个工作节点上的代理,确保容器按照指令运行并与容器运行时通信。

  2. Kube‑Proxy – 处理跨节点的网络,保证服务与 Pod 之间的路由。

  3. 容器运行时 – 实际启动容器(例如 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 改变了我们在规模上运行它们的方式。

二者共同构成了现代云基础设施的基石,为我们日常使用的应用提供动力。

Back to Blog

相关文章

阅读更多 »