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
LimitRange và ResourceQuota
DevOpsKubernetes

LimitRange và ResourceQuota

Khi nhiều team dùng chung một cluster, không gì ngăn team A tạo 10.000 pod hay xin 64Gi RAM cho một container — trừ khi bạn đặt luật. LimitRange đặt mặc định và min/max cho từng pod trong một namespace; ResourceQuota chặn tổng tài nguyên và số object cả namespace được dùng. Bài này khép Part VI bằng cả hai: test thật cú tiêm default, cú vượt max bị 403, và cú tạo pod thứ tư bị quota chặn.

K
KaiMay 24, 2026
Node Allocatable: tài nguyên thật pod đư...
DevOpsKubernetes

Node Allocatable: tài nguyên thật pod được dùng

Bài 22 nhìn requests/limits từ phía pod. Bài này lật sang phía node: một máy 2 vCPU không cho pod xài trọn 2 vCPU đó. Kubernetes cắt bớt phần cho daemon hệ thống, cho daemon Kubernetes, và một khoản đệm chống hết RAM — phần còn lại mới là Allocatable, thứ scheduler thực sự đem chia. Bài này đào công thức Allocatable, đọc Capacity vs Allocatable trên node thật, rồi tự tay thêm reservation và xem Allocatable tụt đúng từng Ki.

K
KaiMay 24, 2026