Kubernetes 简介
Kubernetes(简称 K8s,取首尾字母加中间 8 个字母)是开源的容器编排平台,负责容器的部署、扩缩容、服务发现与自愈。它由 Google 基于内部 Borg 系统设计,后捐赠给云原生计算基金会(CNCF),如今已是容器编排领域的事实标准。学习 Kubernetes,是进入云原生运维与开发的第一课。
Kubernetes 是什么
一句话概括:Kubernetes 是"容器的操作系统"。你只需声明"我要跑什么、要几份、端口是多少",它负责把容器调度到合适的机器上,并持续保证集群处于你声明的状态:
kubectl get nodes
# NAME STATUS ROLES AGE
# node-1 Ready control-plane 12d
# node-2 Ready <none> 12d
解决了什么问题
单机用 docker run 就能把应用跑起来,但生产环境的问题远不止"跑起来":
- 宕机恢复:容器挂掉、节点宕机,谁来重新拉起并调度到健康节点?
- 弹性伸缩:流量高峰要加副本、低谷要缩容,人工操作跟不上节奏。
- 服务发现:Pod 的 IP 随时变化,客户端如何获得稳定的访问入口?
- 平滑发布:多副本如何滚动升级,发布异常又如何快速回滚?
与 Docker Compose / Swarm 的定位差异
| 工具 | 定位 | 适用规模 |
|---|---|---|
| docker run | 单机运行单个容器 | 单容器 |
| Docker Compose | 单机编排多容器,方便本地开发 | 单机、少量服务 |
| Docker Swarm | 多机编排,功能简单、生态弱 | 中小规模 |
| Kubernetes | 多机大规模编排,功能完整、生态强大 | 生产级集群 |
Compose 解决"一台机器上多个容器如何配合",Kubernetes 解决"成百上千台机器上数万容器如何调度",两者解决的并不是同一个问题。
主要特性
- 自愈:容器异常自动重启,节点故障自动在其他节点重建副本。
- 弹性伸缩:支持 kubectl scale 手动扩缩,也支持按 CPU 等指标自动扩缩(HPA)。
- 滚动更新与回滚:升级过程不中断服务,出问题可一键回退到旧版本。
- 服务发现与负载均衡:内置 Service 提供稳定的虚拟 IP 与 DNS 入口。
- 声明式管理:用 YAML 描述期望状态,控制面不断"调谐",直到实际与期望一致。
何时该用 Kubernetes
单体应用、单机部署、只有几台服务器的场景,直接上 Kubernetes 反而增加维护成本。当出现副本数量大、节点多、发布频繁、要求高可用等特征时,编排优势才真正体现。判断标准不是"是否流行",而是你的复杂度与 Kubernetes 是否匹配。
小结:Kubernetes 把容器从"单机进程"升级为"集群级资源",用声明式方式统一管理部署、伸缩与自愈。带着"它解决什么问题"的认识,下一章开始学习它的核心概念。