Node drain, PDB và disruption
Diễn tập failure mà không tự tạo downtime ngoài ý muốn.
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
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.
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Đố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 ↗