Kubernetes Pod Quality of Service (QoS)

Khi triển khai một pod, Kubernetes chỉ định một QoS class tới các pod dựa trên các request và các tham số về giới hạn.

Pod Quality of Service là gì? (QoS)

Kubernetes pod lập lịch dựa trên giá trị request để đảm bảo node được lập lịch có đủ tài nguyên cần thiết để chạy được pod.

Tuy nhiên một node có thể bị quá tải (overcommitted) nếu các pod cố sử dụng mọi phạm vi giới hạn của nó nhiều hơn số tài nguyên khả dụng của node.

💡
Quá tải = tổng request/limit về tài nguyên > tài nguyên khả dụng của node

Khi các pod trên node cố gắng sử dụng các tài nguyên không khả dụng trên node, Kubernetes sẽ dùng QoS class để định nghĩa pod nào sẽ phải exit trước.

Có ba loại Pod QoS:

Best effort

Pod sẽ ở trong best-effort class nếu bạn không chỉ định bất kì request hay limit nào về CPU/RAM. Best-effort pod là các pod ưu tiên thấp. Best effort pod sẽ bị kill đầu tiên nếu node hết tài nguyên.

Burstable

Nếu bạn đặt request thấp hơn limit, pod sẽ ở trong burstable class. Nếu node hết tài nguyên, burstable pod sẽ bị kill nếu không còn best-effort pod nào hoạt động.

Guaranteed

The pod gets a guaranteed class if the request and limit values are the same. It is considered the highest priority pod and gets killed if there are no best-effort or burstable pods.

Pod trong guaranteed class nếu giá trị request và limit bằng nhau. Đây là các pod ưu tiên cao nhất và sẽ bị kill nếu không còn best-effort hay burstable pod nào hoạt động nữa.

Để tìm hiểu rõ hơn bạn hãy tham khảo bài viết sau:

Quản lý tài nguyên trong Kubernetes