Part 12 · Kubernetes · 12.4
Sai lầm và checklist Kubernetes
Kubernetes tự động reconciliation, nhưng không tự bảo đảm ứng dụng đúng, database HA, rollout an toàn hay capacity vô hạn. Phần này dùng như self-review cuối Part 12: nhận diện các mental model nguy hiểm, rồi kiểm tra xem bạn đã có đủ evidence để vận hành production hay chưa.
12.4 Tự đánh giá
Cách dùng: với mỗi red flag, hãy giải thích được “vì sao sai”, failure mode nào có thể xảy ra và signal nào giúp xác nhận. Với checklist, đừng chỉ đánh dấu vì “đã đọc”; nên có manifest, metric, event, log, dashboard hoặc kết quả drill làm evidence.
Red flags
Học thuộc YAML nhưng không vẽ API/controller/kubelet call flow. YAML chỉ là desired state. Nếu không hiểu ai observe object, ai reconcile, ai thực thi trên node và status quay lại bằng đường nào, bạn rất dễ debug sai layer.
Liveness phụ thuộc DB, mọi lỗi đều restart. Liveness nên phát hiện trạng thái container không thể tự phục hồi. Nếu dependency bên ngoài chập chờn mà liveness fail, restart hàng loạt có thể khuếch đại sự cố; readiness thường phù hợp hơn để tạm dừng traffic.
Không requests/limits hoặc tăng limits thay debug OOM. Scheduler và autoscaling cần requests có ý nghĩa; OOM phải phân biệt memory leak, working-set hợp lệ, burst và node pressure. Tăng limit mà không có evidence chỉ dời failure window.
Single replica vẫn tuyên bố zero downtime; PDB được hiểu như HA. Một replica không có redundancy. PDB chỉ giới hạn một số voluntary disruptions thông qua eviction-aware flows; nó không cứu process crash, node loss hay mọi kiểu delete.
Secret base64 được coi encrypted; namespace được coi hard boundary. Base64 chỉ là encoding. Secret protection cần RBAC/identity, encryption at rest khi threat model yêu cầu, rotation và audit; namespace hữu ích cho organization/policy scope nhưng không nên tự động được xem là security boundary tuyệt đối.
StatefulSet được coi tự replicate/backup database. StatefulSet cung cấp identity/order/storage association cho Pod; database replication, consistency, backup, restore và failover vẫn là trách nhiệm của database/operator và quy trình vận hành.
Checklist
- Tôi giải thích control plane và reconciliation.
- Tôi hiểu spec/status/conditions/watch/finalizers/admission.
- Tôi phân biệt Pod/container/controller lifecycle.
- Tôi thiết kế probes và graceful termination đúng.
- Tôi tune requests/limits/QoS/scheduling có evidence.
- Tôi rollout/rollback compatible và verify bằng SLI.
- Tôi debug Service/DNS/Gateway/NetworkPolicy từng hop.
- Tôi hiểu PV/PVC/CSI/StatefulSet và backup.
- Tôi áp dụng RBAC/identity/Pod security/supply-chain policy.
- Tôi thiết kế HPA/PDB/drain không vượt downstream capacity.
Production lens: mỗi mục nên trả lời thêm bốn câu: failure window dài bao lâu, capacity/headroom còn bao nhiêu khi mất một replica/node/AZ, signal nào cảnh báo sớm, và rollback/recovery path đã được test chưa.
Definition of Done
- Trả lời ít nhất 24/30 câu.
- Trả lời được ít nhất 8/10 câu cốt lõi bằng tiếng Anh, không chỉ đọc thuộc định nghĩa.
- Hoàn thành ít nhất 6/8 lab.
- Có rollout dưới traffic, OOM/Pending và network drills.
- Có security baseline và disruption recovery evidence.
Done nghĩa là có evidence. Tối thiểu nên giữ lại manifest/config đã dùng, lệnh hoặc kịch bản failure injection, metric/event/log trước và sau thay đổi, expected result, actual result và recovery/rollback note. Nếu chỉ chạy happy path một lần thì chưa chứng minh readiness cho production.
Tài liệu tham chiếu: Liveness, Readiness and Startup Probes · Disruptions / PodDisruptionBudget · Secrets · StatefulSets