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 把容器从"单机进程"升级为"集群级资源",用声明式方式统一管理部署、伸缩与自愈。带着"它解决什么问题"的认识,下一章开始学习它的核心概念。

笔记加载中…