Device Plugin và Extended Resources
DevOpsKubernetes

Device Plugin và Extended Resources

Pod xin được CPU và memory, nhưng GPU, NIC tốc độ cao hay FPGA thì sao? Device plugin là cách node quảng bá phần cứng ngoài CPU/memory thành extended resource để pod xin và scheduler chia. Bài này dựng một device plugin thật, bắt trọn luồng gRPC nó dùng để đăng ký với kubelet và quảng bá thiết bị, xem kubelet gọi Allocate khi pod chạy, rồi dùng cơ chế extended resource bên dưới để thấy scheduler chia nó y như CPU.

K
KaiMay 24, 2026
Node-pressure eviction
DevOpsKubernetes

Node-pressure eviction

Ba bài qua nói về việc xếp pod. Bài này nói về việc đuổi pod — nhưng không phải preemption (scheduler, vì priority) hay OOM kill (kernel, vì vượt limit). Đây là kubelet chủ động giết pod khi node thật sự cạn RAM hoặc disk, theo ngưỡng và thứ tự xếp hạng riêng. Bài này tự tay tạo áp lực bộ nhớ thật trên một worker rồi xem kubelet trục xuất đúng pod ngốn nhất — kèm thông điệp eviction nói rõ vì sao.

K
KaiMay 24, 2026
Priority và preemption
DevOpsKubernetes

Priority và preemption

Node hết chỗ, một pod quan trọng vừa tạo. Nó chịu treo Pending sau đám pod rác, hay được quyền đá một pod kém quan trọng ra để giành chỗ? PriorityClass gán mức ưu tiên; preemption cho pod ưu tiên cao trục xuất pod thấp khi cần. Bài này lấp đầy cluster bằng pod ưu tiên thấp rồi thả một pod ưu tiên cao — xem nó đá nạn nhân ra và chiếm chỗ, đúng cái bước PostFilter mà Bài 34 bảo 'không giúp được'.

K
KaiMay 24, 2026
Topology spread, pod overhead và schedul...
DevOpsKubernetes

Topology spread, pod overhead và scheduling readiness

Anti-affinity cứng nhắc: mỗi node một pod, dư là treo. Topology spread mềm hơn — rải đều theo maxSkew mà vẫn cho nhiều pod mỗi node. Bài này đào ba cơ chế scheduling tinh: topologySpreadConstraints (rải uyển chuyển), pod overhead (tính thêm tài nguyên cho sandbox runtime), và schedulingGates (giữ pod chưa cho xếp lịch). Test thật cả ba trên cluster.

K
KaiMay 24, 2026
Affinity, taint và toleration
DevOpsKubernetes

Affinity, taint và toleration

Scheduler tự chọn node, nhưng nhiều khi bạn cần can thiệp: pod này phải ở node SSD, hai bản sao đừng nằm chung một máy, node kia chỉ dành riêng cho một team. Bài này đào ba công cụ điều khiển scheduler từ phía bạn — nodeAffinity (hút pod về node có nhãn), podAntiAffinity (đẩy pod xa nhau), taint/toleration (node đẩy pod ra trừ khi pod chịu được). Test thật cả pod bị treo vì affinity, pod thứ ba không chỗ vì anti-affinity, và pod bị NoExecute đuổi khỏi node đang chạy.

K
KaiMay 24, 2026
Scheduler và scheduling framework
DevOpsKubernetes

Scheduler và scheduling framework

Mỗi pod ta tạo đều có ai đó âm thầm chọn node cho nó — đó là kube-scheduler, thứ ta đã dựng ở Bài 8 mà chưa nhìn kỹ. Bài này mở Part VII bằng cách đào đúng cách nó chọn: lọc bỏ node không vừa (filter), chấm điểm node còn lại (score), rồi bind. Test thật một pod bị treo vì không node nào đủ chỗ, một pod được chọn node, và xem scoring dồn pod vào node ít tải hơn — không phải chia đều ngây thơ.

K
KaiMay 24, 2026
DaemonSet: một pod trên mỗi node
DevOpsKubernetes

DaemonSet: một pod trên mỗi node

Deployment quản N bản sao đặt đâu cũng được; StatefulSet quản N pod có danh tính. DaemonSet là mô hình thứ ba và khác hẳn: không đếm bản sao mà bảo đảm đúng một pod trên mỗi node — thêm node thì thêm pod, bớt node thì pod biến mất. Đây là khuôn cho agent log, CNI, node exporter. Bài này đào cách DaemonSet ghim pod vào từng node, vì sao pod của nó chạy được cả trên node chưa sẵn sàng, và cách giới hạn nó vào một nhóm node — test thật trên hai worker.

K
KaiMay 24, 2026