I03 · 計算 & 容器平台 詳細 ROADMAP
計畫文件,不會被 Quartz 渲染。
回主 roadmap → infra/ROADMAP.md
章節目標
Request 從 Gateway 路由到計算資源——這是 infra 最大的主題之一。涵蓋:Container Runtime / K8s 全套 / Helm / Registry / Serverless / 雲端 K8s 服務(EKS / GKE / AKS)、地端 K8s(Kind / OrbStack / k3s)。
這章從 backend/ 吸收大量 pointer(B04 容器底層、B08 Monolith→MS 的 infra 層、B18 部署深入)。
🌱 基本介紹
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 01 | 計算平台全景 | 01-compute-landscape | 🌱 | VM → Container → K8s → Serverless → Edge;每一代解的問題跟新代價 |
❓ 為什麼需要
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 02 | 為什麼 VM 直接開就好,要搞 container | 02-why-container-over-vm | 🌱 | 啟動速度、資源密度、image 可複用、部署一致性 |
| 03 | 為什麼 docker-compose 撐不住要上 K8s | 03-why-k8s-over-compose | 🌱 | 多機自動調度、self-healing、HA、滾動更新;吸收 backend/micro-service/41 |
| 04 | 為什麼 K8s 複雜度值得 | 04-why-k8s-complexity-worth-it | 🌱 | 生態 / 多雲可攜性 / 社群標準;跟小團隊上 K8s 的 trade-off |
| 05 | 為什麼 Serverless 在企業不全面取代 K8s | 05-why-serverless-not-replacing | 🌱 | Cold start / vendor lock-in / state 管理;互補關係 |
🕰️ 演進
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 06 | Container 演進 | ⛔️ infra/compute/03-container-runtime | 🌿 | 跨系列 |
| 07 | K8s 演進 | ⛔️ infra/compute/33-kubernetes-intro | 🌿 | 跨系列 |
| 08 | 計算平台演進驅動力 | 08-compute-evolution-drivers | 🌱 | Bare metal 部署繁瑣撞牆 → VM;VM hypervisor overhead 撞牆 → Container;單機 container scheduling 撞牆 → K8s;K8s 運維重撞牆 → Managed K8s / Serverless;雲地混合的歷史脈絡 |
🧠 知識型
閱讀順序建議(42 題肥章,跟著 request 走 or 主題順序任一):
- Container Supply Chain(F03-A):從 image build 到 run 全流程
- K8s 核心(F03-B):workload / network / storage / config / helm 六大物件
- K8s 可用性 & Scaling(F03-C):上 production 要考慮的面向(含 GPU workload)
- Compose / Serverless / 雲地混合(F03-D/E/F):替代方案與進階場景
F03-A Container 基礎 & Supply Chain
Container 不是只有「build → push → run」三件事。2020+ 供應鏈攻擊(xz、solarwinds)後,build → scan → sign → attest → run 是完整鏈路。這節從 runtime 到 supply chain 一次講清。
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 09 | Container Runtime 深入(吸收 backend B04 #20) | ⛔️ infra/compute/03-container-runtime | 🌿 | 跨系列(原始篇)+ 從 backend B04 吸收:runc / crun / gVisor / OCI spec / K8s CRI |
| 10 | Container Registry | ⛔️ infra/compute/07-container-registry | 🌿 | 跨系列 |
| 11 | Registry 選型對比(概念 + 實戰) | ⛔️ infra/cloud/01-container-registry-comparison/01 + -2 | 🌿 | 跨系列 |
| 12 | Image Build 優化 | 12-image-build-optimization | 🌱 | Multi-stage / BuildKit / distroless / Chainguard / layer caching 策略;build 階段只講建得快、建得小,signing 跟 SBOM 移到 #14 |
| 13 | Image Security Scanning | 13-image-scanning | 🌱 | Trivy / Grype / Snyk;CVE 管理;跟 ops-notes/ 漏洞應變 |
| 14 | Image Signing / SBOM / Provenance | 14-image-signing-sbom | 🌱 | Sigstore cosign / Notary v2;SBOM(SPDX / CycloneDX);SLSA provenance;跟 infra/cicd-deployment/ I07 #33 SBOM 分工(I07 講 CI 整合,本章講 image 本身的簽章鏈) |
| 15 | Container Supply Chain 全景 | 15-container-supply-chain | 🌱 | Build → Scan → Sign → Attest → Admission → Run 全鏈路;policy enforcement(Kyverno / OPA Gatekeeper);跟 I07 CI 整合、I06 admission 串起來的整套防線 |
F03-B Kubernetes 核心
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 16 | K8s Intro | ⛔️ infra/compute/33-kubernetes-intro | 🌿 | 跨系列 |
| 17 | K8s Workloads(Deployment / StatefulSet / DaemonSet / Job) | ⛔️ infra/k8s/01-k8s-workloads | 🌿 | 跨系列 |
| 18 | K8s Networking(Service / Ingress / NetworkPolicy) | ⛔️ infra/k8s/02-k8s-networking | 🌿 | 跨系列 |
| 19 | K8s Storage(PV / PVC / StorageClass / CSI) | ⛔️ infra/k8s/03-k8s-storage | 🌿 | 跨系列 |
| 20 | K8s Config / RBAC | ⛔️ infra/k8s/04-k8s-config-rbac | 🌿 | 跨系列 |
| 21 | Helm 套件管理 | ⛔️ infra/k8s/05-k8s-helm | 🌿 | 跨系列 |
| 22 | Sidecar / Init Container Pattern | 22-sidecar-init-container | 🌱 | 兩種 pattern 的用途:Init(前置準備、migration)/ Sidecar(log collector / auth proxy / envoy);資源計算;lifecycle 先後順序;K8s 1.28 Sidecar lifecycle 新 feature |
| 23 | StatefulSet 深入 | 23-statefulset-deep | 🌱 | Order guarantee、stable network identity、PV provisioning、Headless Service;跑 stateful workload 在 K8s 的完整挑戰;跟 I04 DB-on-K8s 分工(本章講 K8s 機制,I04 講特定 DB 如 PG / Redis 的運維) |
F03-C K8s 可用性 & Scaling
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 24 | Liveness / Readiness / Startup Probe(吸收 backend B08 #36) | 24-k8s-probes | 🌱 | 從 backend 吸收:三 probe 分工;readiness + graceful shutdown 配合 |
| 25 | HPA / VPA / KEDA | 25-k8s-autoscaling | 🌱 | CPU / memory / custom metrics / event-based;跟 backend 壓測配合 |
| 26 | Service Discovery / DNS(吸收 backend B08 #37) | 26-service-discovery | 🌱 | 從 backend 吸收:K8s Service / Consul / etcd 選型;跨 cluster discovery |
| 27 | Pod Affinity / Anti-affinity / Topology | 27-pod-placement | 🌱 | 資源隔離、跨 AZ 分散、節點調度策略 |
| 28 | Node 管理(taint / toleration / labels) | 28-node-management | 🌱 | Workload 隔離、spot instance 策略 |
| 29 | GPU / AI Workload on K8s | 29-gpu-ai-workload | 🌱 | 2024+ 顯學:NVIDIA device plugin / GPU Operator;Multi-Instance GPU (MIG);KubeRay for Ray cluster;vLLM / TGI 部署;Volcano batch scheduler;GPU node taint / toleration;跟 AI 團隊協作 |
F03-D Docker Compose 實戰
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 30 | Docker Compose Cookbook | ⛔️ infra/compute/32-docker-compose-cookbook | 🌿 | 跨系列 |
| 31 | Compose vs K8s(微服務視角) | ⛔️ backend/micro-service/41-docker-compose-vs-k8s | 🌿 | 跨系列 |
| 32 | Compose Production 使用情境 | ⛔️ backend/micro-service/42-docker-compose-production | 🌿 | 跨系列 |
F03-E Serverless
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 33 | Serverless 概念 | ⛔️ infra/compute/24-serverless | 🌿 | 跨系列 |
| 34 | Serverless vs Server(概念 + 實戰) | ⛔️ infra/cloud/02-serverless-vs-server/01 + -2 | 🌿 | 跨系列 |
| 35 | FaaS 深入(Lambda / Cloud Run / Cloudflare Workers) | 35-faas-deep | 🌱 | 各家 runtime 限制、concurrency model、cold start 處理 |
| 36 | Container on Serverless(Fargate / Cloud Run container) | 36-container-serverless | 🌱 | 不 manage K8s 但跑 container 的中間地帶 |
F03-F 雲地混合
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 37 | Managed K8s 選型(EKS / GKE / AKS) | 37-managed-k8s-comparison | 🌱 | control plane 費用、node 管理、整合度、跟 infra/cloud/aws/03-aws-compute 對照 |
| 38 | 地端 K8s 選型(Kind / OrbStack / k3s / RKE2) | 38-on-prem-k8s | 🌱 | 小規模 vs 大規模地端;GPU / edge K8s 場景 |
| 39 | Hybrid / Multi-cluster 策略 | 39-hybrid-multi-cluster | 🌱 | GitOps 管多 cluster;cluster mesh;failover 設計 |
🔧 小實作注意事項
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 40 | 本機 K8s 從零(Kind / OrbStack) | 40-local-k8s-from-scratch | 🌱 | 5 分鐘起 local cluster;deploy sample app;kubectl 基本流 |
| 41 | 寫 production-grade Deployment YAML | 41-production-deployment-yaml | 🌱 | resource request/limit / probe / PDB / 安全 context |
| 42 | Helm chart 從零建 | 42-build-helm-chart | 🌱 | values.yaml / _helpers.tpl / templates;測試 chart |
| 43 | cosign 簽 image + Kyverno admission | 43-cosign-kyverno-demo | 🌱 | cosign generate / sign image;Kyverno policy 只允許簽過的 image;驗證 admission 擋未簽 image |
💣 Anti-pattern
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 44 | 計算平台 Anti-patterns | 44-compute-antipatterns | 🌱 | Container 跑 root、image 塞 3GB(沒 distroless)、K8s Pod 沒 resource limit(OOM kill 別人)、readiness probe 設太寬(流量灌進還沒起好的 pod)、sticky session 硬上 K8s、5 人團隊上 Istio+multi-cluster、GPU 沒設 toleration 跑在 CPU node 上、沒做 image 簽章直接上 production、StatefulSet 用 emptyDir 當 storage |
🧰 對應檢查工具
| # | 主題 | Slug | Stage | 大綱 |
|---|
| 45 | 計算平台工具 | 45-compute-tooling | 🌱 | Container: Docker / Buildah / Podman;K8s: Kubectl / k9s / kubectx / stern;Package: Helm / Kustomize / Timoni;Security: Trivy / Snyk / Grype / cosign / Kyverno / OPA Gatekeeper;Analysis: dive(image layer)/ kube-bench;GPU: nvidia-smi / DCGM |
📎 補充
| # | 主題 | Slug | Stage | 大綱 |
|---|
| S01 | K8s Operator 模式 | s01-k8s-operator | 🌱 | Operator SDK;自訂 CRD;什麼場景值得寫 Operator |
| S02 | K8s Troubleshooting 實戰 | ⛔️ infra/k8s/07-k8s-troubleshooting | 🌿 | 跨系列 |
| S03 | DX:Local dev with K8s | ⛔️ backend/micro-service/52-dx-local-development | 🌿 | 跨系列 |
| S04 | WASM Workload:wasmCloud / Spin / SpinKube | s04-wasm-workload | 🌱 | 2024+ WebAssembly 作為 container 替代:冷啟動快、體積小、語言中立;wasmCloud actor model vs Spin CLI;SpinKube 當 K8s workload 跑 wasm;跟 container / serverless 的定位差 |
章節進度統計
- 知識主題:45 + 4 補充 = 49 項(2026-04 新增:Image Signing/SBOM #14、Container Supply Chain #15、Sidecar/Init Container #22、StatefulSet 深入 #23、GPU workload #29、cosign+Kyverno demo #43、WASM S04)
- 🌿 growing:14(既有 infra/ + k8s/ + cloud/ + micro-service pointer)
- 🌱 seed:35
跨系列連結
- →
infra/compute/03, 07, 24, 32, 33(原始 compute 篇)
- →
infra/k8s/01-08(K8s 深度章節)
- →
infra/cloud/01(Registry 選型)+ 02(Serverless vs Server)
- →
backend/ B04 #20 / B08 36-37 / B18 pointer(已吸收)
- →
backend/micro-service/41, 42, 52-53(Compose vs K8s / DX 實戰)
- →
infra/cloud/aws/03 Compute(雲端 K8s 實作)
- → I04 Data Ops(應用從 compute 讀寫 data)
- → I05 Observability(K8s monitoring)
- → I07 CI-CD(K8s deployment pipeline)