Kubernetes scheduler là một phần của nền tảng điều phối container Kubernetes mã nguồn mở, kiểm soát hiệu năng (performance), dung lượng (capacity) và sẵn sàng (availability) thông qua chính sách (policies) và nhận biết topology (topology awareness).
Scheduler là một thành phần monolithic (đơn khối) của Kubernetes, tách biệt (decoupled) từ API server quản lý cụm (cluster). Nó không phải là admission controller (bộ điều khiển phép), vốn thực sự là mã plug-in chặn các yêu cầu đến Kubernetes API. Quản trị viên ảo hóa sẽ thấy Kubernetes scheduling như tương đương container hóa của VM scheduling, như VMware Distributed Resource Scheduler.
Kubernetes triển khai container được tổ chức thành Pods nằm trên các nhóm tài nguyên logic gọi là Nodes. Yêu cầu cụ thể cho workload được thiết lập qua API. Kubernetes scheduler cố gắng khớp (match) mỗi Pod được tạo bởi Kubernetes với một tập tài nguyên IT phù hợp trên một Node. Nó cũng có thể phân phối bản sao Pod qua các Node khác nhau cho high availability, nếu tính năng đó được mong muốn.
Nếu Kubernetes scheduler không tìm thấy phần cứng phù hợp với yêu cầu và đặc tả của Pod – từ quy tắc affinity và anti-affinity đến cài đặt quality of service – Pod đó bị để unscheduled (chưa được lập lịch), và scheduler thử lại (retries) cho đến khi một máy có sẵn.
Cấu hình
Kubernetes scheduler có thể cấu hình với hai chính sách khác nhau: PriorityFunction và FitPredicate. Nó cũng có thể chọn Node ngẫu nhiên, đây là phương pháp gán container vào tài nguyên với chi phí tính toán tối thiểu.
Chính sách FitPredicate tuân theo các quy tắc bắt buộc, trong khi cố gắng phát hiện label (nhãn) trên Kubernetes Node, hoặc phát hiện số lượng tài nguyên được yêu cầu bởi container đã chạy trên một máy cho trước. FitPredicate giúp phát hiện xem container có vượt quá dung lượng phần cứng cho trước hay không. Nếu người dùng chọn tài nguyên bằng không (zero resources), scheduler luôn có thể thêm Pod khác vào Node.
PriorityFunction áp dụng khi scheduler đã kiểm tra nhiều hệ thống để tìm sự phù hợp tốt nhất. Nếu scheduler tìm thấy một số tùy chọn có thể hỗ trợ Pod, PriorityFunction chỉ dẫn scheduler xếp hạng các máy dựa trên sự phù hợp tốt nhất. Ví dụ, ba Node đáp ứng nhu cầu của Pod mới, nhưng một Node có tài nguyên rảnh nhiều hơn các Node khác, và do đó là sự phù hợp tốt nhất.
Trong môi trường Kubernetes, hai chính sách này giúp cân bằng tải (load balance) workload container trên nhiều máy để không có máy nào bị quá tải trong khi những máy khác ngồi rảnh.