Skip to content

01 - 为什么需要 Kubernetes?

从 Docker 到 K8s 的必然演进

Docker 解决了"打包和运行单个应用"的问题,但在生产环境中,你面临的是:

  • 数十甚至数百个容器要管理
  • 容器挂了谁来自动重启
  • 流量大了怎么自动扩容
  • 新版本发布时怎么零停机更新
  • 多台机器上的容器怎么互相通信
  • 怎么合理地分配资源到不同机器?

Kubernetes(K8s) 就是为了解决这些问题而生的容器编排系统。


Kubernetes 是什么

一句话定义:Kubernetes 是一个用于自动化部署、扩缩容和管理容器化应用的开源平台。

名字来自希腊语"舵手"(κυβερνήτης),K 和 s 之间有 8 个字母,所以简称 K8s。

K8s 的核心能力

能力说明
服务发现与负载均衡自动为容器分配 DNS 名称和 IP,并在多个副本间负载均衡
自动装箱(调度)根据资源需求和约束自动将容器放到合适的节点上
自动修复容器崩溃自动重启,节点故障自动迁移 Pod
自动扩缩容根据 CPU/内存等指标自动增减容器副本数
滚动更新与回滚零停机发布新版本,出问题一键回滚
配置与密钥管理安全地管理配置和敏感信息,不需要重建镜像
存储编排自动挂载本地存储、云存储、NFS 等

K8s 不是什么

常见误解澄清:

  • 不是 PaaS:K8s 不限制你用什么语言、框架、数据库
  • 不提供 CI/CD:它是运行平台,不负责构建和测试
  • 不管理源码:你需要自己构建镜像推送到 Registry
  • 不是万能的:简单场景可能不需要 K8s(比如跑一个博客)

K8s vs 其他编排工具

特性Docker ComposeDocker SwarmKubernetes
规模单机小集群大规模集群
复杂度
社区生态极大
云厂商支持全部主流云(ACK、EKS、GKE、AKS)
自动扩缩容有限完整
生产就绪不适合一般首选

下一步

02 - K8s 架构深入