认识 Kubernetes 与学习路线
Kubernetes(常写作 K8s)是一个管理容器化应用的平台。你告诉它“应用应运行几份、如何被访问、资源上限是多少”,它持续把集群调整到这个目标状态。
本系列不把 Kubernetes 当成一组 kubectl 命令,而是围绕一个完整链路学习:部署应用 -> 让应用可访问 -> 保存数据 -> 观察和排障 -> 安全维护集群。
Kubernetes 解决什么问题
Docker 能运行一个容器,但生产环境还需要处理副本故障、滚动发布、服务发现、跨节点调度、资源隔离和权限控制。Kubernetes 把这些能力统一为可声明、可查询、可自动恢复的资源。
| 需求 | Kubernetes 的做法 |
|---|---|
| 一个容器异常退出 | 控制器创建新的 Pod,使副本数回到目标值 |
| 应用需要多副本 | Deployment 维护指定数量的副本 |
| 服务 IP 会变化 | Service 提供稳定访问入口和 DNS 名称 |
| 应用需要配置或密码 | ConfigMap / Secret 与镜像分离管理 |
| 节点要维护 | cordon / drain 安全迁移可驱逐的工作负载 |
与相邻工具的边界
| 工具 | 主要职责 | Kubernetes 文档不重复讲什么 |
|---|---|---|
| Docker | 镜像、单容器、构建与运行时 | Dockerfile、镜像构建和 Engine 故障排查 |
| Terraform | 云网络、节点、托管集群等基础设施生命周期 | VPC、云账号、集群创建的 IaC 实现 |
| Helm | 打包和参数化 Kubernetes 清单 | 先理解原生资源,再使用 Chart |
| Argo CD | GitOps 同步和交付流程 | 应用如何写清单、如何被 Kubernetes 运行 |
| Prometheus / Grafana | 指标采集、告警与可视化 | 仅说明 Kubernetes 暴露哪些运维信号 |
典型链路是:Terraform 创建基础设施和集群 -> Helm / Argo CD 交付清单 -> Kubernetes 运行工作负载 -> Prometheus 监控运行状态。
先建立四个概念
- 集群:由控制面和若干 Node 组成,控制面决定资源应如何调度和恢复。
- Pod:最小调度单元,通常包含一个主容器;Pod 本身会被替换,不应依赖其临时 IP。
- 控制器:例如 Deployment、StatefulSet、DaemonSet,负责持续维持 Pod 的期望状态。
- 声明式配置:YAML 描述期望状态,控制器把真实状态逐步收敛到该状态。
先学对象,再背命令
不知道一个对象的生命周期和责任边界时,不要急着复制 YAML。先回答“它要长期运行还是一次性运行”“需不需要稳定身份”“谁负责发现它”,再选择资源类型。
文档路线
| 阶段 | 你将学习 |
|---|---|
| 入门 | 准备本地集群、看懂 Node / Namespace / Pod 与资源关系 |
| 工作负载 | Deployment、StatefulSet、DaemonSet、Job、自动扩缩容分别解决什么问题 |
| 平台能力 | 网络访问、配置与数据、调度与权限 |
| 生产运维 | 巡检、发布、排障、节点维护与集群升级 |
建议按编号阅读。已有线上集群经验的读者也建议从第 3 篇开始,统一资源模型和排障术语。
环境前提
- 有一个可操作的 Kubernetes 集群:本地 kind / minikube、公司测试集群或托管集群均可。
- 已安装
kubectl,且当前身份只能操作测试 Namespace。 - 所有示例的镜像、域名、账号和 IP 都是占位符,不应直接用于生产。
下一篇:准备练习环境。