Taint đặt trên node để đẩy Pod ra: theo mặc định Pod sẽ không được schedule lên node đó. Toleration đặt trên Pod để nói rằng nó chấp nhận một taint cụ thể, nhờ đó vẫn có thể lên node bị taint.
Taint có dạng key=value:effect với ba effect:
- NoSchedule — không schedule Pod mới không có toleration.
- PreferNoSchedule — cố tránh, nhưng vẫn xếp lên nếu không còn chỗ khác.
- NoExecute — vừa chặn Pod mới, vừa đuổi Pod đang chạy nếu chúng không tolerate.
bash
kubectl taint nodes node1 gpu=true:NoScheduleyaml
tolerations:
- key: "gpu"
operator: "Equal"
value: "true"
effect: "NoSchedule"Điểm dễ nhầm: taint/toleration là cơ chế loại trừ (giữ Pod thường tránh xa node đặc biệt, ví dụ node GPU hoặc control plane).
Nó chỉ cho phép Pod lên node, không hút Pod về node — muốn hút cần node affinity.