Karpathy 方法 · 四级理解阶梯

Kubernetes 四级理解阶梯

用卡帕西(Andrej Karpathy)的渐进学习架构理解 Kubernetes:受控语言 → 结构图 → 交互网页 → 定制视频。每一级只多加一句提示词,却把同一个知识从「读得懂」推进到「看得见、玩得动、听得会」。

L1 受控语言 · ASD-STE100 L2 结构图 · 确定性 SVG L3 交互网页 · 可操作 L4 定制视频 · 旁白解说
框架

先看地图,再出发THE FRAMEWORK — 四层渐进,层层加深

Karpathy 主张:与其逐字读 AI 生成的长文,不如用四种递进的呈现层级「拆解」同一个概念。每一级都是对上一级的深化,难度与信息密度逐级增加,理解成本逐级降低。

L1 · 受控语言CONTROLLED LANGUAGE

让 LLM 用 ASD-STE100 受控语言解释概念:短句、主动语态、一词一义。比自然语言更清晰易读,Karpathy 有时要求「80% 合规」保留一点灵活性。

L2 · 结构图DIAGRAMS

让 LLM 生成图表或图片。相比文字,视觉形式更直观、解析更快——架构、循环、状态机这类关系,看图比读文省 10 倍脑力。

L3 · 交互网页INTERACTIVE HTML

要求输出 HTML,生成可交互的精美页面。比静态文档更具表现力——你正在看的这一页本身就是 L3 的产物。

L4 · 定制视频CUSTOM VIDEO

生成定制化解释视频,如 3Blue1Brown 风格,并加入语音旁白。这一形式已开始真正可用,也是最被看好的一级。

L1 · 写作

受控语言:用 STE100 讲清 k8sCONTROLLED LANGUAGE — 简短、确定、一词一义

ASD-STE100(航空航天简化技术英语)用约 900 个批准词、短句、主动语态与现在时写作,消灭歧义。以下 20 条 k8s 核心概念(12 条主干 + 8 条补充)全部按 STE 规则撰写,附中文对照。Karpathy 有时只要求「80% 合规」保留灵活性——这里保留了个别专有名词原样。

STE · Cluster集群

A Kubernetes cluster is a group of computers. The cluster runs your applications. Kubernetes manages the cluster for you.

集群是一组计算机。集群运行你的应用。Kubernetes 替你管理集群。

STE · Node节点

Each computer in the cluster is a node. A node has CPU, memory, and storage. Your work runs on nodes.

集群中的每台计算机都是一个节点。节点提供 CPU、内存和存储。你的工作负载运行在节点上。

STE · Container容器

A container is a package. It contains an application and all the files that the application needs. It runs the same way everywhere.

容器是一个包,装着应用及其所需的一切文件。它在任何地方都以相同方式运行。

STE · PodPod(最小调度单元)

A pod is the smallest unit in Kubernetes. A pod holds one or more containers. All containers in one pod share one network address.

Pod 是 Kubernetes 中最小的单元。一个 Pod 装一个或多个容器。同一 Pod 内的容器共享同一个网络地址。

STE · Control Plane控制面

The control plane is the brain of the cluster. It makes all decisions for the cluster. It stores the state and applies your commands.

控制面是集群的大脑。它为集群做所有决策,保存状态并执行你的命令。

STE · API ServerAPI Server(大门)

The API server is the front door of the cluster. Every command enters through it. It checks who you are and what you may do.

API server 是集群的大门。所有命令都从它进入。它验证你的身份与权限。

STE · etcdetcd(唯一真相)

etcd is the database of the cluster. It stores the state of every object. It is the single source of truth.

etcd 是集群的数据库。它保存每个对象的状态,是唯一的真相来源。

STE · Scheduler调度器

The scheduler gives each new pod to a node. It reads the needs of the pod and the resources of the nodes. Then it chooses the best fit.

调度器为每个新 Pod 分配节点。它读取 Pod 的需求与各节点的资源,然后选出最合适的节点。

STE · Controller控制器

A controller watches the cluster all the time. It compares the desired state with the current state. If they differ, it acts to fix the difference.

控制器时刻注视着集群。它比较期望状态与当前状态;若不一致,就采取行动修正。

STE · DeploymentDeployment(应用描述)

A Deployment defines the desired state of an application. It states how many pod copies must run. It updates and rolls back the application safely.

Deployment 定义应用的期望状态,规定必须运行多少个 Pod 副本,并能安全地更新与回滚应用。

STE · ServiceService(稳定地址)

A Service gives a fixed address to a set of pods. Pods come and go, but the address stays the same. Traffic flows to the correct pods.

Service 为一组 Pod 提供固定地址。Pod 来来去去,地址不变,流量被导向正确的 Pod。

STE · Kubeletkubelet(节点管家)

The kubelet is the manager of a node. It runs on every node. It starts pods and reports their health to the control plane.

kubelet 是节点的管家,运行在每个节点上。它负责启动 Pod,并向控制面汇报它们的健康状况。

STE · Namespace · 补充命名空间

A namespace is a partition of the cluster. It separates objects into groups. The same name can exist in different namespaces.

命名空间把集群划分成多个区域,对象按区域隔离;不同命名空间里可以有同名对象。常用于环境隔离(dev / prod)或让多个团队共享一个集群。

STE · Label & Selector · 补充标签与选择器

A label is a key-value pair on an object. A selector chooses the objects that match the given labels. Services and controllers use selectors to find their pods.

标签是挂在对象上的键值对;选择器按标签挑选对象。Service、ReplicaSet 都靠标签选择器找到目标 Pod——这是 k8s 实现「松耦合」的机制。

STE · ConfigMap · 补充ConfigMap(配置)

A ConfigMap stores configuration data. It keeps settings away from the application image. You can change settings without building a new image.

ConfigMap 存放配置数据,把设置从镜像里「抽离」出来;改配置无需重新构建镜像,挂载方式包括环境变量与配置文件。

STE · Secret · 补充Secret(密钥)

A Secret stores sensitive data, such as passwords and tokens. It keeps this data separate from the image. Access to a Secret is limited and controlled.

Secret 存放敏感数据(密码、令牌等),与镜像分离,访问受控。注意:Secret 只是 base64 编码而非加密,这是最常见的误解。

STE · Ingress · 补充Ingress(入口流量)

An Ingress brings external traffic into the cluster. It routes traffic by host name or path. It can also terminate TLS.

Ingress 把集群外部流量引入内部,按域名或路径路由,并可终结 TLS。它位于 Service 之前,是七层(HTTP)入口。

STE · Volume & PVC · 补充存储:Volume / PV / PVC

A Volume gives storage to a pod. A PersistentVolume stores data beyond pod life. A PersistentVolumeClaim asks for storage.

Volume 为 Pod 提供存储;PersistentVolume(PV)让数据在 Pod 销毁后仍保留;PersistentVolumeClaim(PVC)是向集群「申请存储」的凭证。

STE · Probe · 补充探针(健康检查)

A probe checks the health of a container. A liveness probe asks: is the container alive? A readiness probe asks: can it receive traffic?

探针检查容器健康。liveness 探针问「容器还活着吗」,readiness 探针问「可以接流量吗」。就绪探针失败会把 Pod 从 Service 后端摘除。

STE · Workloads · 补充StatefulSet / DaemonSet / Job

A StatefulSet manages pods with stable identity and order. A DaemonSet runs one pod on every node. A Job runs a task to completion.

StatefulSet 给 Pod 稳定身份与启动顺序(如数据库);DaemonSet 保证每个节点都运行一个 Pod(如日志采集);Job 跑一次性任务直到完成。

STE 核心规则:① 短句(尽量 ≤ 20 词);② 主动语态;③ 现在时;④ 一词一义,不用同义词;⑤ 程序性文本用祈使句。术语(如 pod、etcd)作为专有名词保留,这是「80% 合规」的典型做法。
L2 · 图表

结构图:一眼看懂 k8s 的骨架DIAGRAMS — 架构、循环、生命周期、调度、流量

文字讲关系总得靠脑补。下面十张确定性结构图,把 L1 里的概念拼装成系统:集群架构、声明式调谐环、Pod 生命周期、调度管线、Deployment 层级、Service 流量,再加 4 张补充概念图解(命名空间与标签选择器、Ingress、配置与存储、实体 vs 对象)。图 1 可点击组件查看职责。

图 1集群架构总览:控制面 + 工作节点

Control Plane 做决策,Worker Nodes 跑工作。点击图中任意组件查看职责。

控制面 Control Plane API Server 认证 · 鉴权 · 准入 etcd 键值存储 · Raft Scheduler 过滤 · 打分 · 绑定 Controller Manager Deployment / RS / Node kubectl apply / get / delete 你的命令 Node 1 · 工作节点 kubelet kube-proxy 容器运行时 Container Runtime Pod 容器 1 容器 2 Pod 容器 1 Node 2 · 工作节点 kubelet kube-proxy 容器运行时 Container Runtime Pod 容器 1 Pod 容器 1 Node 3 · 工作节点 kubelet kube-proxy 容器运行时 Container Runtime Pod 容器 1 Pod 容器 1 调度 + 状态上报(经 API server)
← 点击架构图中的任意组件,查看它的职责。

图 2声明式调谐环

你只声明「要什么」,系统自己收敛成那样。

期望状态 Desired kubectl apply 你的配置 API Server + etcd 校验 · 鉴权 · 持久化 控制器 Reconcile 对比期望 vs 实际,采取行动 实际状态 Actual kubelet 上报节点现状 ① 写入期望 ② 观察 ③ 创建 / 删除 Pod ④ 状态上报(kubelet → API server) 调谐循环 Reconcile Loop 系统持续向期望状态收敛

图 3Pod 生命周期

从一个状态到另一个状态,都有明确条件。

Pending 等待 已被接受,等待调度 Running 运行中 容器已启动 Succeeded 完成 任务正常结束 Failed 失败 容器异常退出 CrashLoopBackOff 反复崩溃,退避重试 调度成功 正常退出 异常退出 连续崩溃 退避后重试 Deployment 管理的 Pod 失败会被控制器重建;无控制器的裸 Pod 不会复活

图 4调度管线

新 Pod 如何被送上「最合适」的节点。

待调度 Pod Pending 新建或重建 ① Filter 过滤 资源充足? 污点容忍?亲和性? ② Score 打分 按策略评估 选出最优节点 ③ Bind 绑定 写入 Pod → Node kubelet:在目标节点启动容器,Pod 进入 Running 调度器只做「决定」,真正的启动由节点上的 kubelet 执行

图 5Deployment 三层从属

Deployment → ReplicaSet → Pod,配滚动更新与回滚。

Deployment 定义期望:副本数 · 镜像 · 更新策略 ReplicaSet 维持 Pod 副本数 = 期望值 Pod (v1) app=web Pod (v1) app=web Pod (v1) app=web 更新与回滚 滚动更新: 先起新 Pod,就绪后停旧 Pod 回滚: 切换到上一版本 ReplicaSet 历史版本保留,随时可回

图 6Service 流量路径

稳定入口 → 动态后端。Pod 会变,Service 地址不变。

客户端 Client Service ClusterIP 10.96.0.1 selector: app=web 固定地址,不随 Pod 变化 Endpoints 后端 Pod IP 列表 随 Pod 自动更新 Pod A 10.244.1.5 Pod B 10.244.2.9 Pod C 10.244.3.7 kube-proxy 在节点上把流量转发到后端 Pod(iptables / ipvs 实现)

示意结构:IP 与副本数量仅为示意,用于说明「稳定入口 + 动态后端」的转发关系。

图 7命名空间与标签选择器

对象如何被「组织」(命名空间)与「挑选」(标签选择器)。

集群 Cluster namespace: dev Deployment Pod ConfigMap dev 环境 namespace: prod Deployment Pod prod 环境 标签选择器 Label & Selector Pod app=web Pod app=web Pod app=db selector: app=web 只匹配 app=web 的 Pod 选择器在命名空间内挑选对象

示意:命名空间隔离对象;Service / ReplicaSet 用标签选择器找到目标 Pod。

图 8Ingress 入口路径

外部流量按域名 / 路径路由到不同 Service,再转发到 Pod。

客户端 Client Ingress 按域名 + 路径路由 shop.example.com/api 由 Ingress Controller 落地 Service ClusterIP selector: app=shop Pod A app=shop Pod B app=shop Pod C app=shop

Ingress 是 API 对象(声明);真正接收并转发流量的是 Ingress Controller 进程(如 nginx-ingress)。

图 9配置、密钥与存储:注入与绑定

ConfigMap / Secret 注入 Pod;PVC 申请 → PV 绑定 → Pod 挂载。

ConfigMap 普通配置 Secret 密码 / 令牌(base64) Pod env: APP_MODE=dev volume: /etc/app-config volume: /var/secrets 容器读取配置与密钥 环境变量 挂载 / 环境变量 PVC 申请存储 请求大小与类别 PV 提供存储 真实后端(磁盘/NFS) 绑定 使用 挂载

示意:Secret 只是 base64 编码(非加密);存储对象(PV/PVC)也支持动态供给。

图 10运行实体 vs 逻辑对象

谁有进程在跑,谁只是 etcd 里的一条声明。

运行实体 · 有进程,真实在跑 控制面进程 kube-apiserver etcd kube-scheduler kube-controller-manager 节点代理进程 kubelet kube-proxy 容器运行时(containerd 等) 运行单元 Node(物理 / 虚拟机) Pod / 容器进程 逻辑对象 · etcd 中的 API 资源,无进程 工作负载 Deployment ReplicaSet StatefulSet DaemonSet Job / CronJob 网络 Service Endpoints Ingress NetworkPolicy 配置 · 存储 · 组织 ConfigMap Secret PV / PVC Namespace · Label 实体是执行者,对象是声明:Controller 把 Deployment 落地,kube-proxy 把 Service 落地
L3 · 网页

交互探索:亲手「拨动」KubernetesINTERACTIVE — 调谐模拟器 + 概念自测

静态图之上,加一层交互。拖动滑块观察控制器如何收敛期望状态;回答九个问题检验四层理解。交互只用于「变化本身有解释价值」的地方。

副本调谐模拟器

拖动滑块改变 Deployment 的期望副本数,观察控制器如何让实际数量收敛到期望值——这是「声明式 + 调谐循环」最直观的体验。

期望副本 Desired
3
当前副本 Current
3

概念自测

九道题覆盖 L1 与 L2 的核心与补充概念,答完显示总分与下一步建议。

1Kubernetes 中最小的调度单元是什么?

Pod 是最小调度单元,可包含一个或多个容器;容器必须运行在 Pod 内,Pod 通常由控制器管理。

2哪个组件保存集群的「唯一真相」?

etcd 保存所有对象的状态,是唯一真相来源;API Server 是所有请求的唯一入口,但数据最终落在 etcd。

3新 Pod 由谁决定运行在哪台节点上?

Scheduler 负责过滤、打分、绑定三步;kubelet 只负责执行启动,不决定去向。

4Deployment 副本数从 3 改成 1,谁负责删除多余的 2 个 Pod?

ReplicaSet 的职责就是维持副本数与期望值一致;Deployment 负责管理 ReplicaSet 的版本与滚动更新。

5Service 的主要作用是什么?

Pod 会重建、IP 会变;Service 提供固定地址,并把流量负载均衡到后端 Pod。

6kubectl apply 提交的配置最终到达哪里?

命令先进 API Server 做认证、鉴权与准入校验,再写入 etcd 成为期望状态,之后控制器才开始行动。

7不指定命名空间时,对象默认进入哪个命名空间?

未指定时对象进入 default 命名空间;kube-system 是系统组件(API server、etcd 等)专用的命名空间,生产实践常按环境或团队再划分。

8ConfigMap 与 Secret 的共同作用是什么?

两者都是「注入」机制:配置不再写死在镜像里,改配置无需重新构建镜像。区别是 Secret 装敏感数据(注意:它只是 base64 编码,不是加密)。

9想把外部 HTTP 流量按域名路由到不同 Service,应该用什么?

Ingress 按域名 / 路径把流量路由到不同 Service;Endpoints 只是 Pod IP 列表,kubelet 管 Pod 生命周期,PV 是存储。真正转发流量的是 Ingress Controller 进程。

L4 · 视频

定制视频:3b1b 风格的解说片VIDEO — 画面 + 中文旁白

最高一级:一段 60 秒的动画解说短片(4 段连续拼接),配中文旁白,把「集群基础 → 控制面 → 网络 → 配置与负载」讲成一段看得见的过程。下方视频已生成并合流,可直接播放。

成片Kubernetes 全景解说 · 4 分 22 秒完整版

3b1b 风格动画 + 中文旁白(言午本人克隆音色 · MiniMax 快速档)。画面与旁白已合流,可点击播放。

4 分 22 秒 · 16:9 3b1b 风格动画 克隆音色 中文旁白 · 已合流

旁白脚本(拟)

(画面)集群在深色背景上缓缓浮现,节点如星系般排列,控制面在中央发亮。

(旁白)「Kubernetes 是一个集群操作系统。你只需声明期望的状态——多少个副本、用什么镜像。控制面负责决策,调度器把 Pod 送上最合适的节点,kubelet 在节点上启动容器。系统不停地观察、比较、修正,直到现实与期望完全一致。这就是 Kubernetes 的调谐循环。」

(收尾)「用四层理解阶梯,从受控语言到定制视频,把 k8s 一次看懂。」