大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把 kubernetes-advanced-essentials 串起来:为 CodeRoadMap 设计一份 生产向多 AZ 部署方案——托管选型、工作负载拓扑、调度约束、资源配额、可观测与 GitOps 发布。不要求真开云账号,交付 可评审的设计文档 + 关键 YAML/Helm values 片段。
学习目标
- 独立完成从 k8a-intro 到 k8a-monitor 的交叉引用
- 产出多 AZ backend 部署方案,含 spread、PDB、HPA、监控
- 衔接 kubernetes-essentials、helm-gitops-essentials、observability-essentials、prometheus-essentials
任务:CodeRoadMap 多 AZ 部署方案
假设 tracks API(Spring Boot) 上托管 Kubernetes(自选 EKS/GKE/AKS 之一),至少 2 个可用区,staging + prod 两集群或两 namespace(二选一,文档说明取舍)。
1. 集群与发布(k8a-managed、k8a-multi)
- 一页「为何托管、为何不自建」(k8a-self-managed)
- GitOps 数据流:Git → Argo CD/Flux → Helm Release(gitops-intro)
- prod / staging 差异表(副本、资源、域名)
2. 工作负载与高可用(k8s-deployments、k8a-topology)
- backend Deployment:
replicas ≥ 3,topologySpreadConstraints 跨zone - PDB
minAvailable: 2,滚动更新maxUnavailable: 1 - Ingress + readiness/liveness 探针(k8s-ingress)
3. 调度与资源(k8a-taints、k8a-resources)
- 说明是否使用专用节点池 / taint(若无,写理由)
- namespace LimitRange + ResourceQuota 片段
- backend 容器 requests/limits 与 JVM 参数一行说明
4. 可观测(k8a-obs、observability-essentials、prometheus-essentials)
- ASCII 图:指标(kube-state + app)、日志、trace 出口
- ServiceMonitor 或 annotation scrape 方案(prom-scrape)
- 三条 SLI + 一条 symptom 告警(obs-slo)
5. 资源优化(k8a-monitor)
- HPA 策略:
min/max、CPU target、为何不用更激进 - rightsizing:假设 P95 CPU/内存,写 before/after request
6. 扩展(选做 k8a-crds)
- 是否引入 Prometheus Operator CRD;或说明仅用 Helm chart 的理由
交付物
docs/k8a-codermap-prod.md(或 PR 描述)包含:
§1 架构 ASCII 图(用户 → Ingress → backend × N → MySQL)
§2 上表勾选结果 + 关键 YAML/values 附录
§3 故障演练 3 条:单 AZ 失效、节点 drain、OOM 时预期行为
验收标准
- 文档内至少 8 条指向本 track 或关联 track 的
/tracks/.../lessons/...链接 - spread + PDB + HPA 三者无逻辑冲突(文档解释)
- 监控覆盖 集群层 + 应用层 各至少 2 项信号
小结
多 AZ 不是多副本复制粘贴——是托管选型、调度约束、资源与可观测的一体设计。 本 track 完结;日常发布请继续 helm-gitops-essentials,指标与 SLO 深入 prometheus-essentials 与 observability-essentials。