K8s学习记录
写在前面
这是一份面向 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 build、docker run; - 了解 IP、端口、DNS 和 HTTP 的基本概念;
- 能够阅读基础 YAML。
默认工具
系列中的实验优先使用以下工具:
| 工具 | 用途 |
|---|---|
| Docker | 提供容器运行环境和构建应用镜像 |
| kind | 在 Docker 容器中创建本地 Kubernetes 集群 |
| kubectl | 查看和管理 Kubernetes 资源 |
| Helm | 在后续章节中管理应用模板与发布版本 |
为了让命令和资源保持一致,示例默认使用以下命名:
| 项目 | 约定值 |
|---|---|
| 集群名称 | k8s-lab |
| 学习命名空间 | k8s-learning |
| 示例应用 | notes-app |
kind 适合低成本、可重复的本地实验,但它不是生产集群安装方案。在集群搭建章节中,我会补充 kubeadm 的组件关系、节点规划、网络插件和高可用方向,为以后进入真实集群环境建立索引。
贯穿系列的实战项目
整个系列会持续改造同一个 notes-app:一个由 Web 服务、API 和数据存储组成的简化应用。
它会经历下面的演进过程:
- 从单个 Pod 启动应用,观察容器日志和生命周期;
- 交给 Deployment 管理副本,完成扩缩容、更新与回滚;
- 使用 Service 提供稳定访问地址;
- 使用 Ingress 接收集群外部的 HTTP 请求;
- 将配置和敏感信息从镜像中分离;
- 通过 PVC 保存数据,并理解有状态工作负载;
- 加入健康检查、资源限制和自动扩缩容;
- 使用 RBAC 限制访问权限,使用 Helm 管理发布;
- 最后结合日志、指标和事件完成一次故障排查演练。
每一篇实战文章都会尽量包含“目标、前置条件、操作步骤、验证结果、常见问题、复盘”六部分。命令执行成功不是终点,还需要能够解释资源为什么处于当前状态,以及出现异常时应该先看哪里。
系列路线图
第一阶段:建立基础认知
| 编号 | 文章 | 本章成果 | 状态 |
|---|---|---|---|
| 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 应用 | 串联部署、网络、配置、存储、安全与排障能力 | ⬜ 计划中 |
阶段验收:面对 Pending、CrashLoopBackOff、ImagePullBackOff、Service 无法访问、Ingress 返回异常等问题时,能够收集证据、定位原因并验证修复结果。
建议学习节奏
这份路线可以按照 8~10 周推进,每周完成 1~2 篇,并给实验和复盘预留时间。
| 周期 | 建议内容 |
|---|---|
| 第 1~2 周 | 完成基础认知,熟悉 kind、kubectl、Pod 和资源清单 |
| 第 3~5 周 | 打通 Deployment、Service、Ingress、配置与发布流程 |
| 第 6~8 周 | 学习健康检查、资源管理、存储、权限和 Helm |
| 第 9~10 周 | 集中练习可观测性、故障排查与综合交付 |
时间安排不是硬性要求。比“按时看完”更重要的是每个实验都亲手执行,并能够在不照抄原文的情况下重新完成一次。
学习记录约定
为了避免只留下命令、不留下理解,每一章都按下面的方式记录:
- 先写预期:执行命令之前,先判断资源状态应该如何变化;
- 再做验证:使用
kubectl get、describe、logs等命令确认结果; - 主动制造故障:修改镜像名称、端口、探针或资源限制,观察异常状态;
- 保留排查证据:记录现象、事件、日志、原因和修复方式;
- 清理实验资源:每章结束后确认哪些资源需要保留,哪些可以删除;
- 完成一次复述:不用术语堆砌,用自己的话解释本章解决了什么问题。
最终验收清单
- 能画出控制平面与工作节点的主要组件关系;
- 能使用 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 解决了什么问题》。
