写在前面

这是一份面向 Kubernetes 初学者的系列学习记录,也是一张会持续更新的学习地图。

这个系列默认读者已经接触过 Linux 和 Docker,知道镜像、容器、端口映射、挂载等基本概念,但还没有系统使用过 Kubernetes。学习过程中不会按照资源对象逐个背诵字段,而是围绕一个小型 Web 应用,从“在本地跑起来”逐步演进到“能够稳定发布、扩缩容、持久化、观测和排查”。

本篇只承担系列导航和进度记录的职责。每个主题会单独成文,并在发布后补充链接。

学习目标

完成这个系列后,我希望能够独立完成以下工作:

  • 解释 Kubernetes 的核心架构,以及各组件分别解决什么问题;
  • 使用 kind 创建可重复的本地实验集群,并熟练使用 kubectl;
  • 编写和维护常见 Kubernetes YAML 资源清单;
  • 部署 Web 应用,并通过 Service 和 Ingress 对外提供访问;
  • 使用 ConfigMap、Secret 和持久卷管理配置与数据;
  • 配置健康检查、资源限制、自动扩缩容和滚动发布;
  • 使用 Namespace、ServiceAccount 和 RBAC 完成基础权限隔离;
  • 使用 Helm 管理应用的多环境配置和发布版本;
  • 结合 Logs、Metrics、Events 定位常见故障;
  • 理解 kind 与 kubeadm 的定位差异,知道如何继续学习生产集群的搭建与维护。

前置知识与实验环境

前置知识

开始之前,建议先具备这些基础:

  • 能够在 Linux 或 macOS 终端中完成常用文件和进程操作;
  • 理解 Docker 镜像与容器的关系;
  • 会编写简单的 Dockerfile,并使用 docker builddocker run
  • 了解 IP、端口、DNS 和 HTTP 的基本概念;
  • 能够阅读基础 YAML。

默认工具

系列中的实验优先使用以下工具:

工具 用途
Docker 提供容器运行环境和构建应用镜像
kind 在 Docker 容器中创建本地 Kubernetes 集群
kubectl 查看和管理 Kubernetes 资源
Helm 在后续章节中管理应用模板与发布版本

为了让命令和资源保持一致,示例默认使用以下命名:

项目 约定值
集群名称 k8s-lab
学习命名空间 k8s-learning
示例应用 notes-app

kind 适合低成本、可重复的本地实验,但它不是生产集群安装方案。在集群搭建章节中,我会补充 kubeadm 的组件关系、节点规划、网络插件和高可用方向,为以后进入真实集群环境建立索引。

贯穿系列的实战项目

整个系列会持续改造同一个 notes-app:一个由 Web 服务、API 和数据存储组成的简化应用。

它会经历下面的演进过程:

  1. 从单个 Pod 启动应用,观察容器日志和生命周期;
  2. 交给 Deployment 管理副本,完成扩缩容、更新与回滚;
  3. 使用 Service 提供稳定访问地址;
  4. 使用 Ingress 接收集群外部的 HTTP 请求;
  5. 将配置和敏感信息从镜像中分离;
  6. 通过 PVC 保存数据,并理解有状态工作负载;
  7. 加入健康检查、资源限制和自动扩缩容;
  8. 使用 RBAC 限制访问权限,使用 Helm 管理发布;
  9. 最后结合日志、指标和事件完成一次故障排查演练。

每一篇实战文章都会尽量包含“目标、前置条件、操作步骤、验证结果、常见问题、复盘”六部分。命令执行成功不是终点,还需要能够解释资源为什么处于当前状态,以及出现异常时应该先看哪里。

系列路线图

第一阶段:建立基础认知

编号 文章 本章成果 状态
01 Kubernetes 解决了什么问题 理解声明式管理、控制循环和集群核心组件 ⬜ 计划中
02 使用 kind 创建本地集群 创建 k8s-lab,掌握 kubectl,并了解 kubeadm 的生产学习方向 ⬜ 计划中
03 Pod、容器与 YAML 资源清单 独立创建 Pod,查看状态、日志并进入容器排查 ⬜ 计划中
04 标签、选择器、命名空间与资源管理 对实验资源进行分组、筛选和隔离 ⬜ 计划中

阶段验收:能够从零创建实验集群,在 k8s-learning 命名空间中运行一个 Pod,并通过状态、日志和事件解释它的运行情况。

第二阶段:完成应用部署闭环

编号 文章 本章成果 状态
05 使用 Deployment 部署与扩缩容 声明并维护多个应用副本 ⬜ 计划中
06 使用 Service 和集群 DNS 访问应用 为动态 Pod 提供稳定的服务发现入口 ⬜ 计划中
07 使用 Ingress 暴露 HTTP 服务 从集群外部通过域名访问应用 ⬜ 计划中
08 使用 ConfigMap 和 Secret 管理配置 分离普通配置与敏感信息 ⬜ 计划中
09 滚动更新、回滚与版本发布 发布新版本并在异常时安全回退 ⬜ 计划中

阶段验收:能够更新应用镜像或配置,通过 Ingress 访问新版本,并在主动制造发布异常后完成回滚。

第三阶段:补齐生产基础能力

编号 文章 本章成果 状态
10 健康检查与应用自愈 正确配置启动、存活和就绪探针 ⬜ 计划中
11 CPU、内存限制与 HPA 自动扩缩容 管理资源边界,并根据负载调整副本数 ⬜ 计划中
12 PV、PVC 与有状态应用 理解存储生命周期并保存应用数据 ⬜ 计划中
13 ServiceAccount、RBAC 与基础安全 按最小权限原则限制应用和用户操作 ⬜ 计划中
14 使用 Helm 管理应用配置和版本 将资源清单整理为可复用、可配置的 Chart ⬜ 计划中

阶段验收:删除并重建应用 Pod 后数据仍然存在;应用具备合理的健康检查和资源边界;不同身份只能执行被授权的操作。

第四阶段:可观测性与故障处理

编号 文章 本章成果 状态
15 Logs、Metrics、Events 与常见故障排查 建立从现象、证据到根因的排障顺序 ⬜ 计划中
16 综合实战:交付可观测的 Web 应用 串联部署、网络、配置、存储、安全与排障能力 ⬜ 计划中

阶段验收:面对 PendingCrashLoopBackOffImagePullBackOff、Service 无法访问、Ingress 返回异常等问题时,能够收集证据、定位原因并验证修复结果。

建议学习节奏

这份路线可以按照 8~10 周推进,每周完成 1~2 篇,并给实验和复盘预留时间。

周期 建议内容
第 1~2 周 完成基础认知,熟悉 kind、kubectl、Pod 和资源清单
第 3~5 周 打通 Deployment、Service、Ingress、配置与发布流程
第 6~8 周 学习健康检查、资源管理、存储、权限和 Helm
第 9~10 周 集中练习可观测性、故障排查与综合交付

时间安排不是硬性要求。比“按时看完”更重要的是每个实验都亲手执行,并能够在不照抄原文的情况下重新完成一次。

学习记录约定

为了避免只留下命令、不留下理解,每一章都按下面的方式记录:

  1. 先写预期:执行命令之前,先判断资源状态应该如何变化;
  2. 再做验证:使用 kubectl getdescribelogs 等命令确认结果;
  3. 主动制造故障:修改镜像名称、端口、探针或资源限制,观察异常状态;
  4. 保留排查证据:记录现象、事件、日志、原因和修复方式;
  5. 清理实验资源:每章结束后确认哪些资源需要保留,哪些可以删除;
  6. 完成一次复述:不用术语堆砌,用自己的话解释本章解决了什么问题。

最终验收清单

  • 能画出控制平面与工作节点的主要组件关系;
  • 能使用 kind 创建、检查和删除本地集群;
  • 能从零编写 Pod、Deployment、Service 和 Ingress 清单;
  • 能完成应用扩缩容、滚动更新和回滚;
  • 能使用 ConfigMap、Secret 和 PVC 管理配置与数据;
  • 能合理设置健康检查、资源请求和资源限制;
  • 能解释 HPA 的工作条件并完成一次扩缩容实验;
  • 能使用 Namespace、ServiceAccount 和 RBAC 进行基础隔离;
  • 能创建并维护一个基础 Helm Chart;
  • 能通过状态、日志、事件和指标排查常见故障;
  • 能独立完成 notes-app 的综合部署与验收。

后续学习方向

完成生产基础阶段后,可以继续沿着这些方向深入:

  • 使用 kubeadm 搭建多节点、高可用集群;
  • 使用 GitOps 管理集群和应用变更;
  • 学习 Operator 与自定义资源;
  • 建立更完整的日志、指标和链路追踪体系;
  • 学习网络策略、镜像安全与供应链安全;
  • 探索服务网格、多集群与集群生命周期管理。

这些内容暂时不进入当前主线,避免在基础能力尚未形成时引入过多工具。

更新日志

  • 2026-08-16:创建系列入口,确定 kind 实验环境、四阶段学习路线和综合实战目标。

下一步:完成第 01 篇《Kubernetes 解决了什么问题》。