Kubernetes
从 Pod 到生产环境,全面学习 Kubernetes。涵盖部署、服务、入口控制器、Helm、扩缩容、RBAC 和可观测性。
共 14 节,按顺序
- 125 分钟
什么是Kubernetes
欢迎。如果你用过一两次 Docker,现在总听到 Kubernetes 这个词却又说不太清它是什么,那你来对地方了。这一课结束时,你会清楚 Kubernetes 做的是什么事,会用一条命令和一个真实集群对过话,也会知道一份清单长什么样。我们不赶时间。
Why orchestrators existControl plane vs nodesKubectlCluster-infoManifests - 230 分钟
您的第一个 Pod
上一课你和集群对过话,但从没让它跑起任何东西。这一课要补上的就是这块空缺。Kubernetes 不像 docker run 那样直接运行一个容器,它运行的是...
Pod manifestKubectl applyKubectl getKubectl logsKubectl execKubectl delete - 335 分钟
Deployment 与 ReplicaSet
上一课结尾你已经亲眼见过:删掉一个裸 Pod,或者让它崩溃,就没有任何东西会把它拉回来。做五分钟的实验这样没问题,但只要是你真正在乎、希望一直跑着的东西,这就完全不够用。没人愿意守在终端前盯着 kubectl get...
Deployment manifestReplicasReplicaSetRolling updatesRollout statusRollout undo - 435 分钟
Service
你已经有一个 Deployment 在维持三个 Pod 的存活,这解决了 Pod 死掉之后回不来的问题。但它没有解决第二个问题,而这个问题在你真的想跟这些 Pod 通信的那一刻就会冒出来:每个 Pod 都有自己的 IP 地址,而这个地址是靠不住的。一个 Pod...
ClusterIPNodePortLoadBalancerSelector matching labelsKubectl exposePort-forward - 535 分钟
探针(Probes)与自愈
一个已经崩溃的进程好办。它没了,操作系统发现了,Kubernetes 再起一个新的。难办的是那种还在运行、却已经不干活了的进程:数据库连接池死锁了的 Web...
Liveness probeReadiness probeStartup probeHttp probe specRestart policyWhat happens on failure - 635 分钟
ConfigMap 与 Secret
眼下如果容器需要一项设置,比如日志级别或者数据库用户名,唯一能放的地方就是烤进镜像里。这样能撑到某一天:预发布环境要用一个跟生产环境不一样的值,或者每位开发者自己的测试集群各要一个值。为了改一个字符串就重新构建镜像,既慢,又意味着镜像本身得知道它将来运行在什么环境里,而这本不该由它操心。
ConfigMap manifestEnvFromMount as fileSecret base64Kubectl create secret genericNever commit real secrets - 735 分钟
Volume 与持久化存储
到目前为止你部署的一切,都是故意让它失忆的。Pod 起来,干完活,死掉的时候,它写过的那套文件系统跟着一起没了。对一个只管发网页的 Web 服务器来说,这样正合适。对数据库来说这是灾难,而你第一次发现它,往往是某个节点重启之后,数据就那么没了。
EmptyDirPersistentVolumeClaimStorageClassPVC manifestMount in a Deployment - 825 分钟
Namespace 与 Label
一个只有六个 Pod 的集群很好办。运行 kubectl get pods,全部尽收眼底,每一个是干什么的你都清楚。而一个跨四个团队、三套环境、装着六百个 Pod 的集群就完全是另一回事了:kubectl get pods 变成一堵文字墙,两个团队都想把自己的应用叫...
Kubectl create namespace-n flagDefault vs kube-systemLabelsSelectorsKubectl get -l - 935 分钟
Ingress
你已经能把流量送进集群了。NodePort 会在每个节点上打开一个高位端口,LoadBalancer 会向云厂商要一个公网 IP。两种都能用,也都以同样的方式扩展不下去:每个应用程序都需要自己的端口或者自己的负载均衡器,五个应用就意味着五个要记住的...
Ingress controllerIngress manifestHost and path rulesIngressClassNameTLS via cert-manager - 1035 分钟
Helm 基础
给 Kubernetes 写到第五个 Web 应用,你会注意到一件让人提不起劲的事:你在反复敲同样的 YAML。一个 Deployment、一个 Service、一个...
Chart structureValues.yamlHelm installHelm upgradeHelm templateWhen to use Helm vs raw manifests - 1130 分钟
扩缩容与水平Pod自动扩缩器(HPA)
设想一家超市有十条收银通道,但当班的只有两个收银员。早上九点,这完全够用。傍晚六点,队伍排到了店的最里头,店长得亲自走过去,手动多开四条通道。每天傍晚都得来一遍,永远如此。
Kubectl scaleMetrics-server requirementHorizontalPodAutoscaler manifestCPU targetVPA mention - 1235 分钟
RBAC
这门课里你运行的每一条命令,都是以你自己(集群管理员)的身份发出去的,而集群对它们全都说了"可以"。你一个人学的时候这没问题。可只要来了第二个人,或者集群内部有个应用程序需要跟 Kubernetes API 本身对话,这就不再没问题了。
ServiceAccountRole vs ClusterRoleRoleBindingLeast privilegeVerbs and resources - 1330 分钟
可观测性
凌晨三点,有东西出问题了。用户看到了错误。你手上是一个装着四十个 Pod 的集群,而对眼下处境唯一诚实的描述是:你不知道是哪一个出了毛病,也不知道问题是一小时前才开始的,还是一周前就有、只是刚刚越过了某条线。
Stdout-as-logsKubectl logsPrometheus + grafanaOpenTelemetry mentionWhere to start - 1460 分钟
毕业项目:部署一个技术栈
到目前为止,每一课都只讲一种对象,而且每一种都是单独演示的。学东西该这么学,但真实的系统从来不是这个形状。一个真实的应用程序是这些对象里的几个,只有凑在一起才说得通: 一个必须把数据保住的数据库,一个必须找到数据库的接口服务,一份在不同环境下各不相同的配置,一个绝不能躺在 Git...
Multi-service DeploymentConfigMap for configSecret for db passwordPVC for db dataIngress for the APILiveness probe+1
用你的语言学习 Kubernetes
每一节课、测验和导师回复都以你的语言显示。AI 导师会用你提问的语言来回答。
Roles that use Kubernetes
See how hiring teams interview engineers on Kubernetes, in production-like environments.
Platform Engineer
Hire platform engineers who reduce friction for every team. Real golden-path templates, real internal CLIs, real service onboarding flows. We record every step.
See the interviewDevOps Engineer
Hire DevOps engineers who actually ship. Run live or take-home interviews in production-like Linux environments with Docker, Kubernetes, Terraform and CI/CD. See how they debug, automate, and work alongside AI.
See the interviewSite Reliability Engineer (SRE)
Hire SREs who actually run production. Live workspaces with metrics, logs, traces and a service that is starting to misbehave. We record every keystroke.
See the interview