CHƯƠNG 11 · Kubernetes SRE & Reliability•BÀI 42 / 80

Node drain, PDB và disruption

Diễn tập failure mà không tự tạo downtime ngoài ý muốn.

Vận hành◷ 4 phút đọc2/4 trong chương

Nắm bản chất

PodDisruptionBudget giới hạn số Pod replicas có thể bị gián đoạn bởi các voluntary disruptions được API eviction tôn trọng. PDB không bảo vệ trước mọi loại lỗi node hay OOM. Khi kubectl drain, cần kiểm tra trạng thái PDB, storage attachment, terminating Pods và scheduling capacity.

Một Deployment một replica với PDB minAvailable=1 có thể khiến drain bị chặn. Đó là tín hiệu kiến trúc: muốn vừa drain vừa giữ availability, cần capacity và replica strategy phù hợp.

Luồng hoạt động

PDB + replicas→drain→reschedule

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

kubectl -n app get pdb
kubectl -n app describe pdb api-pdb
kubectl cordon NODE
kubectl drain NODE --ignore-daemonsets --delete-emptydir-data
kubectl uncordon NODE

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Chỉ thử drain trong Kind lab Buổi 11. Ghi số replicas Available trước, trong và sau drain; đừng chạy trên production khi không có change plan.

Lỗi dễ mắc

!

Force delete hoặc bỏ PDB để vượt drain có thể gây downtime hoặc mất dữ liệu nếu stateful workloads chưa graceful shutdown.

Tự kiểm tra

PDB có ngăn node hỏng đột ngột không?Xem đáp án ↗

Không. PDB áp dụng cho voluntary disruptions đi qua cơ chế eviction; node failure là involuntary.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.

↓ Tải mã nguồn thực hành chương 11
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗