TL;DR

ByteDance đã open-source Gödel Scheduler dưới organization KubeWharf với license Apache-2.0. Đây là scheduler đã chạy production tại ByteDance cho cluster 20.000+ node, 1.000.000+ pod, đạt throughput 5.000+ pod/giây — so với ~10 pod/giây của scheduler Kubernetes mặc định. Mục tiêu: hợp nhất lịch biểu online services (TikTok, Douyin, Toutiao) và offline batch jobs (ML training, big data) trong cùng một resource pool để đẩy utilization lên 60%+.

Có gì mới

Gödel không phải bản vá scheduler mặc định — nó là một kiến trúc phân tán ba thành phần thay thế hoàn toàn kube-scheduler:

  • Dispatcher — quản lý hàng đợi, phân vùng node, áp dụng sort policy (FIFO/DRF) và dispatching policy (LoadBalance).
  • Scheduler — filter/score theo framework hai tầng Unit + Pod, hỗ trợ gang scheduling và preemption plug-in.
  • Binder — phát hiện xung đột cross-node và single-node, xử lý preemption victim, binding cuối cùng.

Điểm khác biệt lớn nhất là optimistic concurrency: Gödel đẩy phần filter/score tốn thời gian nhất xuống chạy song song, thay vì tuần tự như scheduler mặc định. Ý tưởng giống như cách database hiện đại dùng MVCC thay vì lock pessimistic — nhiều scheduler shard cùng match pod với node độc lập, xung đột (nếu có) được giải quyết ở Binder layer.

Cùng với Gödel, ByteDance đã release Katalyst — resource manager QoS-based ở node level. Hai component này hợp tác để đạt utilization 60%+ khi co-locate online và offline workload.

Vì sao quan trọng

Với đội ngũ vận hành cluster lớn, scheduler mặc định của Kubernetes là nút thắt khét tiếng khi số node vượt vài nghìn. Native scheduler đạt chỉ ~10 pod/giây trên cluster 5.000 node — không đủ để handle burst như launch LLM training job hay batch nightly. Trước Gödel, lựa chọn là viết custom scheduler nội bộ hoặc mix nhiều scheduler (Volcano cho batch, default cho online), với chi phí vận hành kép.

Gödel mang tới một giải pháp đã tôi luyện ở quy mô không tưởng — ByteDance chạy hàng triệu pod mỗi ngày cho TikTok và Douyin — nay available cho cộng đồng không mất phí.

Điều hiếm gặp ở đây: hyperscaler open-source scheduler core của họ. Google giữ Borg nội bộ, Meta có Twine không mở mã nguồn, Amazon giữ kín scheduler EKS backend. Việc ByteDance đưa ra toàn bộ Gödel — kèm paper SoCC 2023, documentation, setup guide — là bước đi cộng đồng hiếm hoi từ một Big Tech Trung Quốc cho hệ sinh thái CNCF.

Con số kỹ thuật

MetricNative K8s schedulerGödel
Throughput (cluster 5k node)~10 pod/s2.000+ pod/s (single shard)
Throughput tối đa5.000+ pod/s (multi-shard)
Đơn vị schedulePodUnit + Pod (batch-friendly)
ConcurrencyTuần tự filter/scoreOptimistic concurrency
Production scalevài chục nghìn node (cần tune)20k+ node, 1M+ pod
Utilization (đi kèm Katalyst)~20–30%60%+

Feature set ra mắt bao gồm Gang Scheduling, Job-Level Affinity, SubCluster Concurrent Scheduling, Resource Reservation, pluggable preemption framework, và hỗ trợ non-native resource (memory bandwidth, network bandwidth).

So sánh với scheduler khác

Trong hệ sinh thái batch scheduler, Gödel không phải kẻ duy nhất — nhưng vị trí của nó khá riêng:

  • Volcano (CNCF) — batch-focused, mạnh về HPC/ML nhưng không thay thế scheduler mặc định cho online.
  • Apache YuniKorn — application-aware, multi-tenant, nhưng chưa chạy ở scale 1M pod.
  • Koordinator (Alibaba) — cũng co-locate online + offline, nhưng là một set plug-in trên scheduler mặc định.
  • Gödel — thay thế hoàn toàn scheduler, thiết kế lại concurrency từ gốc, unified online + offline native.

Use case phù hợp

  • Cluster Kubernetes >5.000 node chịu burst schedule lớn (LLM training launch, batch nightly).
  • Tổ chức muốn co-locate online serving + offline batch để bòn utilization.
  • ML platform cần gang scheduling (all-or-nothing cho pod group).
  • Multi-tenant cluster cần job-level affinity và sub-cluster concurrent scheduling.
  • Môi trường preemption nặng cần chiến lược victim-selection có thể plug-in.

Hạn chế & giá

Giá: miễn phí (Apache-2.0). Nhưng có vài điểm cần lưu ý trước khi nhảy vào:

  • Support Kubernetes từ v1.21.4 đến v1.24.6 — chưa bắt kịp phiên bản mới nhất.
  • ByteDance công khai nói project cần thêm tính tổng quát và chuẩn hoá — API surface còn có thể thay đổi.
  • Để đạt con số 60% utilization cần ghép với Katalyst — QoS/resource-management system cùng nhà.
  • Operational overhead cao hơn: thay vì một binary kube-scheduler, bạn phải vận hành Dispatcher + Scheduler + Binder.

Tiếp theo là gì

Gödel đã xuất hiện tại SoCC 2023 dưới dạng paper học thuật trước khi open-source tháng 04/2024. Repo hiện ~651 stars, roadmap tập trung vào support Kubernetes version mới hơn, mở rộng plug-in preemption, tích hợp sâu hơn với Katalyst, và đẩy mạnh engagement CNCF.

Nếu bạn vận hành cluster lớn và đang đau đầu với scheduler throughput, đây là lúc thử nghiệm trên staging. Bắt đầu tại github.com/kubewharf/godel-scheduler với setup KIND local.

Nguồn: CNCF Blog, KubeWharf GitHub, SoCC 2023 paper.