调度与资源
关键问题工作负载为什么没有落到预期节点,资源承诺是否真实反映运行峰值?
现场任务用 requests、limits、亲和性与污点构建一套可复现的调度约束,并演练容量不足时的处置顺序。
通过信号FailedScheduling 事件可解释,节点余量可量化,扩容或降载动作有明确触发阈值。
01 / LEARNING MAP
五条路径覆盖生产集群的关键边界。每一条都从问题出发,以可执行任务和可验证信号收束。
关键问题工作负载为什么没有落到预期节点,资源承诺是否真实反映运行峰值?
现场任务用 requests、limits、亲和性与污点构建一套可复现的调度约束,并演练容量不足时的处置顺序。
通过信号FailedScheduling 事件可解释,节点余量可量化,扩容或降载动作有明确触发阈值。
关键问题一次请求经过哪些入口、服务发现与策略边界,失败发生在哪一跳?
现场任务沿 DNS、Service、Gateway 和 NetworkPolicy 验证请求路径,保留每一跳的可观测证据。
通过信号解析延迟、连接失败率和路由权重均有基线,异常能定位到具体边界。
关键问题Pod 重建后哪些状态必须保留,卷绑定与故障域如何影响恢复时间?
现场任务验证 PVC 绑定、快照恢复与跨节点重建流程,记录 RPO、RTO 和数据校验结果。
通过信号卷事件无阻塞,恢复演练达到目标时间,业务校验确认数据完整。
关键问题新版本如何分批进入流量,指标恶化时系统能否停止并安全回滚?
现场任务串联预检、灰度、SLO 观察、放量与回滚,并验证 HPA 在发布窗口内的行为。
通过信号每一阶段都有自动门禁,错误预算触线会停止放量,回滚时间被实际测量。
关键问题谁能改变集群状态,敏感配置如何流转,越权行为怎样被发现?
现场任务收敛 ServiceAccount 权限、隔离 Secret、启用准入策略,并从审计日志验证控制效果。
通过信号最小权限可验证,违规清单在准入阶段被拒绝,关键变更可追溯到主体。
02 / INCIDENT ATLAS
先看现象,再提出判断;用证据缩小范围,执行可逆处置,最后把系统性条件写进复盘。
kubectl describe pod -n checkout checkout-api-7d9f6c8b7d-k2m4p只看 Pod phase 就删除重建;调度约束未变时,新 Pod 会以相同原因继续 Pending。
kubectl logs -n checkout checkout-api-7d9f6c8b7d-k2m4p -c app --previous --tail=200只读取当前容器日志;真正的异常栈常留在已经终止的上一实例中。
kubectl get pod -n jobs invoice-worker-6b98c44f8f-v7q2n -o jsonpath='{.status.containerStatuses[0].lastState.terminated.reason}'看到 OOMKilled 就认定节点内存不足;容器触限和节点驱逐需要不同的扩容与修复路径。
kubectl exec -n checkout deploy/checkout-api -- nslookup payments.payments.svc.cluster.local只在本机执行 nslookup;本机解析链路绕过集群 DNS 与命名空间网络策略,不能代表 Pod 现场。
kubectl rollout status deployment/checkout-api -n checkout --timeout=120s只提高 progressDeadlineSeconds;这会延迟失败信号,却不会修复探针、容量或 PDB 冲突。
kubectl get httproute -n checkout checkout-canary -o yaml把声明的 10% 权重当作实际 10% 请求;会话保持、长连接和低样本量都会造成显著偏差。
03 / RELEASE CONTROL
每个阶段同时定义放行证据和停止信号。没有证据就不推进,触碰阈值就恢复到已知健康状态。
清单校验通过,镜像签名有效,容量可容纳 surge,回滚版本与负责人已确认。
发现高风险策略变更、容量不足、依赖未就绪或缺少可执行回滚步骤时停止。
变更提交人补齐清单与回滚方案;发布负责人完成预检并决定是否进入灰度。
单副本或 5% 流量健康,启动、就绪、核心事务与依赖调用全部通过。
新版本五分钟错误率超过基线 1 个百分点,或出现重启、积压和数据校验失败时停止。
发布负责人执行灰度与暂停;服务负责人验证核心事务并对版本健康结论负责。
至少覆盖一个业务高峰窗口,延迟、错误率、饱和度和错误预算均在阈值内。
P95 延迟恶化超过 15%、错误预算燃烧率超过 2,或证据缺失时停止。
服务负责人解释业务 SLO;SRE 核验观测窗口、阈值和错误预算,任一方可叫停。
每次放量后指标稳定且版本分布符合目标;异常时能在既定时限恢复上一版本。
实际流量权重偏离目标、健康副本下降或回滚演练未通过时停止继续放量。
发布负责人执行放量或回滚;故障指挥者在用户影响扩大时接管恢复优先级。
变更、指标、事件、审批、实际版本和回滚结果关联到同一发布记录。
缺少时间窗、查询链接、操作者或最终状态时不关闭发布任务。
发布负责人归档完整证据;服务负责人确认最终状态,复盘改进项由明确责任人接收。
04 / DECISION LAB
工具名称不是答案。把工作负载上下文、硬约束、选择依据和长期代价放在同一张决策卡上。
05 / EVIDENCE CHAIN
时间窗、对象和版本保持一致,才能把分散信号串成因果路径,并找到安全的下一步。
控制面首先记录了什么失败原因,它从何时开始并影响哪些对象?
Warning FailedScheduling: 0/12 nodes are available; 8 Insufficient cpu, 4 had untolerated taint.应用或系统组件在同一时间窗内输出了什么错误,上一个容器实例是否保留关键上下文?
checkout-api previous container: config key PAYMENT_ENDPOINT missing; process exited with code 1.用户影响、资源饱和与变更时间是否相关,当前值相对基线偏离多少?
5m error rate 18% vs 0.4% baseline; ready replicas 7/10; memory working set 98% of limit.请求在哪一跳开始变慢或失败,错误是否集中在特定版本、节点或依赖?
trace 8f2c: gateway 12ms → checkout v2 34ms → payments DNS timeout 2,000ms.哪项可逆动作能先恢复服务,执行条件、负责人和验证步骤是否明确?
当 checkout v2 错误率连续 5 分钟高于 2%:暂停 rollout,回滚 v1,确认三个 SLI 恢复。Events 定位控制面失败,Logs 还原进程上下文,Metrics 量化影响,Trace 锁定失败边界,最后用 Runbook 执行可逆恢复并验证 SLI 回归。
06 / ENGINEERING CASE
把生产学习中的平台约束、故障证据和验证结果放进一个可审阅的 Jenkins on Kubernetes 工程案例。
Jenkins on Kubernetes
把调度、RBAC、存储、Ingress、NetworkPolicy 与动态工作负载组合成真实平台。
从生产知识整理,到故障场景训练,再到可运行的平台工程。
Walker 的 Kubernetes 生产工程实践:以证据链完成架构设计、部署验证、故障诊断与可逆运维。
部署区域:Azure East Asia
JCasC 与完整插件版本锁
Controller 零执行器
Namespace 最小权限与默认拒绝网络策略
非特权临时 Pod Agent
Secret 安全注入与托管 TLS
为什么构建:目标是把分散的 Kubernetes 知识组合成真实平台,而不是重复安装教程。
以上是 2026-08-06 的部署验证证据,不是实时监控或持续可用性承诺;为节省云额度,Jenkins 可能暂停运行。
07 / PRACTICE BOARD
每项任务都以可观察结果结束。进度仅保存在当前浏览器,不需要账号,也不会离开本机。
0 / 8 已完成
依据压测 P95 与峰值设置 requests、limits,并用调度事件和资源曲线验证容量余量。
区分 startup、readiness、liveness 探针,验证慢启动和依赖故障不会触发重启风暴。
配置可用副本下限,演练节点排空,并证明 PDB 不会与滚动更新参数形成停滞。
用稳定负载触发扩缩容,记录指标延迟、稳定窗口以及达到目标副本数的时间。
实施默认拒绝与最小放行,并从业务 Pod 验证 DNS、入口和依赖流量的允许与拒绝路径。
按 5%、25%、50% 分批放量,用实际请求计数和 SLO 门禁决定继续、暂停或回滚。
注入探针失败,在目标时限内恢复上一版本,并验证配置、流量和数据兼容性。
构建事件时间线,区分触发因素与系统性条件,产出有负责人、截止日和验证方式的改进项。