Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Kube-scheduler là gì? Nguyên lý và cách sử dụng kube-scheduler trong Kubernetes

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:10/03/2026
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]

Kube-scheduler là thành phần trong Kubernetes Control Plane chịu trách nhiệm lựa chọn node phù hợp để triển khai Pod dựa trên tài nguyên và các ràng buộc đã cấu hình. Nhờ cơ chế lập lịch thông minh, kube-scheduler giúp tối ưu hiệu suất cụm, cân bằng tải và đảm bảo ứng dụng vận hành ổn định theo đúng chính sách đề ra. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về kube-scheduler bao gồm nguyên lý hoạt động và cách sử dụng hiệu quả trong Kubernetes.

Những điểm chính

  • Khái niệm: Hiểu rõ kube-scheduler là thành phần lập lịch trung tâm của Kubernetes, giúp nhận biết vai trò cốt lõi của nó trong việc phân phối và tối ưu workload.
  • Nhiệm vụ chính: Nắm được nhiệm vụ chính của kube-scheduler là phân tích, lựa chọn và gán nhãn cho Node, giúp bạn hiểu cách nó quyết định vị trí đặt Pod.
  • Nguyên lý hoạt động: Nắm được quy trình hai giai đoạn lọc và chấm điểm, giúp hiểu cách kube-scheduler chọn Node tối ưu để chạy Pod.
  • Các yếu tố ảnh hưởng: Nhận biết các yếu tố tác động đến quá trình lập lịch như yêu cầu tài nguyên, nodeSelector và taints/tolerations, giúp chủ động kiểm soát vị trí và cách Pod được phân phối trong cụm.
  • Cách sử dụng và tùy biến: Biết cách khởi chạy và tùy chỉnh kube-scheduler thông qua tham số dòng lệnh hoặc tệp cấu hình, giúp triển khai các profile lập lịch nâng cao và vận hành nhiều scheduler trong cùng một cụm.
  • Biết thêm Vietnix là nhà cung cấp dịch vụ Cloud và S3 Object Storage chất lượng cao dành cho doanh nghiệp.
  • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến kube-scheduler. 
những điểm chính

Kube-scheduler là gì?

Kube-scheduler là thành phần điều phối mặc định chạy trên Control Plane, đóng vai trò như một người phân công tài nguyên thông minh. Nhiệm vụ cốt lõi của nó là theo dõi các Pod mới được tạo (nhưng chưa được gán máy chủ) và tìm kiếm một Node (máy chủ) phù hợp nhất trong Cluster để triển khai. Quá trình này không chỉ là chọn ngẫu nhiên, mà kube-scheduler thực hiện dựa trên các tính toán phức tạp nhằm:

  • Phân phối tối ưu: Đảm bảo workload được trải đều giữa các Node, tránh tình trạng Node quá tải, Node bỏ trống.
  • Đáp ứng ràng buộc: Kiểm tra các yêu cầu đặc thù về tài nguyên (CPU, RAM), chính sách bảo mật và các quy tắc ưu tiên (Affinity/Anti-affinity).
  • Nâng cao ổn định: Đảm bảo hệ thống luôn vận hành ở trạng thái hiệu suất cao nhất bằng cách đưa ra các quyết định gán Pod chính xác và tức thì.
Kube-scheduler là thành phần điều phối mặc định chạy trên Control Plane
Kube-scheduler là thành phần điều phối mặc định chạy trên Control Plane

Trong quá trình vận hành Kubernetes, kube-scheduler đóng vai trò quan trọng trong việc phân bổ pod đến các node phù hợp nhằm tối ưu hiệu suất và tài nguyên của cluster. Tuy nhiên, để cơ chế scheduling hoạt động hiệu quả, hệ thống cũng cần một hạ tầng cloud ổn định, có khả năng mở rộng linh hoạt và đáp ứng tốt các workload container hóa.

Dịch vụ Public Cloud Server của Vietnix cung cấp nền tảng hạ tầng mạnh mẽ, giúp doanh nghiệp dễ dàng triển khai Kubernetes với tài nguyên linh hoạt, hiệu năng ổn định và khả năng mở rộng nhanh chóng, từ đó tối ưu quá trình điều phối workload và vận hành hệ thống một cách hiệu quả. Liên hệ ngay để được tư vấn chi tiết về dịch vụ!

Nhiệm vụ chính của kube-scheduler

Khi một Pod mới được khởi tạo và ở trạng thái chưa được gán máy chủ, kube-scheduler sẽ đóng vai trò là bộ lọc thông minh để quyết định vị trí đặt Pod. Quy trình này diễn ra qua hai giai đoạn chính:

  1. Phân tích và lựa chọn: Scheduler quét toàn bộ danh sách các Node hiện có, đối chiếu yêu cầu của Pod (như CPU, RAM, ổ cứng) với tài nguyên thực tế của từng Node để tìm ra ứng cử viên phù hợp nhất.
  2. Gán nhãn và kích hoạt: Sau khi chốt phương án, scheduler thực hiện cập nhật trường nodeName vào phần cấu hình (spec) của Pod. Ngay lập tức, kubelet tại Node được chọn sẽ nhận tín hiệu, tiến hành kéo (pull) image và khởi chạy các container tương ứng.
Nhiệm vụ chính của kube-scheduler
Nhiệm vụ chính của kube-scheduler

Nguyên lý hoạt động của kube-scheduler

Nguyên lý hoạt động của kube-scheduler dựa trên quy trình hai giai đoạn: Trước hết loại bỏ các Node không phù hợp, sau đó chấm điểm các Node còn lại để chọn ra nơi chạy Pod tối ưu nhất.​ Chi tiết như sau:

1. Giai đoạn lọc Node

Đầu tiên, kube-scheduler duyệt qua toàn bộ Node trong cluster và loại bỏ những Node không thỏa mãn các điều kiện bắt buộc của Pod như thiếu CPU/RAM, không khớp nodeSelector/label hoặc xung đột taint/toleration. Kết quả của giai đoạn này là danh sách Node khả thi mà Pod có thể chạy, nếu danh sách rỗng thì Pod sẽ ở trạng thái Pending và có thể kích hoạt các cơ chế như preemption.

2. Giai đoạn chấm điểm Node

Sau khi có danh sách Node khả thi, kube-scheduler tiến hành gán điểm cho từng Node dựa trên nhiều hàm chấm điểm rồi cộng/trọng số các điểm này lại. Các tiêu chí chấm điểm thường gặp gồm mức tài nguyên trống, phân bố tải giữa các Node, data locality hay sự phù hợp với topology, và cuối cùng Node có tổng điểm cao nhất sẽ được chọn để gán Pod.

Nguyên lý hoạt động của Kube-scheduler
Nguyên lý hoạt động của Kube-scheduler

Các yếu tố ảnh hưởng đến việc lập kube-scheduler

Có nhiều yếu tố làm ảnh hưởng đến việc lập lịch của kube-scheduler, chi tiết như sau:

1. Yêu cầu tài nguyên: Đây là yếu tố tiên quyết. Scheduler căn cứ vào mức requests (CPU, RAM) của Pod để lọc ra các Node còn đủ chỗ trống thực tế. Nếu không có Node nào đáp ứng được mức tài nguyên tối thiểu này, Pod sẽ giữ trạng thái Pending cho đến khi hệ thống bổ sung thêm tài nguyên hoặc có Pod khác giải phóng chỗ.

2. Ràng buộc vị trí (NodeSelector & Affinity/Anti-affinity):

  • NodeSelector: Một cơ chế đơn giản giúp chỉ định Pod phải chạy trên Node có nhãn khớp chính xác.
  • Affinity/Anti-affinity: Một phiên bản nâng cao cho phép thiết lập các quy tắc ưu tiên hoặc bắt buộc. Điều này giúp bạn gom nhóm các Pod liên quan lại gần nhau hoặc tách rời chúng để đảm bảo tính sẵn sàng cao (High Availability).

3. Cơ chế Taints và Tolerations: Đây là bộ lọc giúp cô lập các Node đặc biệt. Node được gắn Taint sẽ đẩy mọi Pod ra xa, trừ những Pod có Toleration tương ứng. Cơ chế này cực kỳ hữu ích để dành riêng máy chủ cho các workload quan trọng hoặc các dòng Server có cấu hình đặc thù.

4. Tính cục bộ của dữ liệu (Data Locality): Scheduler ưu tiên đưa Pod đến gần nguồn dữ liệu (Storage/Volume) nhất có thể. Đối với các ứng dụng xử lý dữ liệu lớn hay hệ quản trị cơ sở dữ liệu, yếu tố này giúp giảm thiểu độ trễ mạng và tối ưu hóa băng thông truyền tải.

5. Kiểm soát xung đột Workload (Inter-workload Interference): Để duy trì chất lượng dịch vụ (QoS), Scheduler có thể tính toán để tránh đặt CPU/IO cạnh các ứng dụng nhạy cảm về độ trễ. Việc giảm cạnh tranh tài nguyên quá mức giúp hệ thống tránh được hiện tượng “noisy neighbor” và ổn định toàn cụm.

Các yếu tố ảnh hưởng đến việc lập Kube-scheduler
Các yếu tố ảnh hưởng đến việc lập Kube-scheduler

Cách sử dụng kube-scheduler trong cụm Kubernetes tập trung vào cách khởi chạy tiến trình, truyền tham số dòng lệnh và nạp tệp cấu hình để tùy biến hành vi lập lịch. Cách sử dụng cụ thể như sau:

1. Khởi chạy kube-scheduler với tham số dòng lệnh

Kube-scheduler được chạy như một tiến trình độc lập với cú pháp tổng quát dạng kube-scheduler [flags], trong đó các flags cho phép cấu hình địa chỉ lắng nghe, chứng thực, ghi log và cơ chế leader election. Khi triển khai ở môi trường sản xuất, kube-scheduler thường được chạy kèm các tham số leader election để đảm bảo tính sẵn sàng cao, ví dụ các flag như –leader-elect, –leader-elect-lease-duration và –leader-elect-retry-period.​

2. Tùy biến hành vi bằng tệp cấu hình

Để tùy chỉnh hành vi lập lịch, bạn có thể viết một tệp cấu hình dưới dạng KubeSchedulerConfiguration rồi truyền đường dẫn tệp này cho kube-scheduler thông qua flag –config. Cách sử dụng điển hình là chạy lệnh:​

kube-scheduler --config /path/to/kube-scheduler-config.yaml

Trong tệp cấu hình tối thiểu, bạn cần khai báo apiVersion, kind và thông tin kết nối đến API server, ví dụ:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig

Từ tệp này, bạn có thể định nghĩa các profile lập lịch và plugin tương ứng cho từng giai đoạn scheduling.

3. Cấu hình profile lập lịch và nhiều scheduler

Thông qua KubeSchedulerConfiguration, người quản trị có thể khai báo một hoặc nhiều profile bằng trường profiles, mỗi profile có thể gắn với tên scheduler khác nhau. Ví dụ, tệp cấu hình đơn giản cho một scheduler tùy chỉnh có thể trông như sau:

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: my-scheduler

Tương tự, bạn có thể tạo thêm tệp cấu hình khác với schedulerName: my-scheduler-2 để vận hành nhiều cấu hình lập lịch trong cùng cụm. Sau đó, Pod có thể chọn scheduler mong muốn thông qua trường spec.schedulerName.​

Cách sử dụng Kube-scheduler
Cách sử dụng Kube-scheduler

Vietnix – Nhà cung cấp giải pháp Cloud Server và S3 Object Storage linh hoạt, hiệu năng cao cho doanh nghiệp

Vietnix là nhà cung cấp Cloud Server với hạ tầng hiện đại, hiệu năng ổn định và khả năng mở rộng linh hoạt, phù hợp để triển khai website, ứng dụng hoặc các hệ thống container và xử lý dữ liệu của doanh nghiệp. Bên cạnh đó, S3 Object Storage của Vietnix mang đến giải pháp lưu trữ dữ liệu theo mô hình object storage, giúp quản lý, sao lưu và phân phối dữ liệu hiệu quả. Nhờ khả năng tương thích S3 API, hệ thống dễ dàng tích hợp với nhiều nền tảng ứng dụng và công cụ DevOps. Liên hệ ngay!

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

Khi nào kube-scheduler bắt đầu lập lịch cho Pod?

Kube-scheduler bắt đầu xử lý khi trong cụm xuất hiện Pod ở trạng thái Pending chưa có trường nodeName, sau đó chọn Node thích hợp và cập nhật lại trường này.​

Kube-scheduler khác gì so với kubelet?

Kube-scheduler chỉ quyết định Node nào sẽ chạy Pod, còn kubelet là tiến trình trên từng Node, chịu trách nhiệm thực thi và giám sát Pod đã được gán về Node đó.

Có thể dùng nhiều kube-scheduler trong cùng một cụm không?

Có. Bạn có thể triển khai nhiều kube scheduler với các cấu hình và schedulerName khác nhau, sau đó Pod chỉ định scheduler cần dùng thông qua trường spec.schedulerName.

Vì sao kube-scheduler quan trọng đối với hiệu năng hệ thống?

Kube-scheduler phân bố workload hợp lý giữa các Node, giúp tránh tình trạng quá tải cục bộ, sử dụng tài nguyên cân bằng hơn và cải thiện độ ổn định của toàn cụm.

Kube-scheduler là thành phần then chốt bảo đảm mỗi Pod được gán vào Node phù hợp, từ đó tối ưu hiệu năng sử dụng tài nguyên và tăng độ ổn định cho toàn bộ cụm Kubernetes. Việc hiểu rõ cách kube-scheduler hoạt động và cách cấu hình các tham số liên quan giúp quản trị viên chủ động kiểm soát chiến lược lập lịch, đáp ứng linh hoạt nhu cầu mở rộng, hiệu năng và độ sẵn sàng của hệ thống.​

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

kien-thuc-dich-vu

kien-thuc-kubernetes

text
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG