Skip to playbook content
Browse all chapters
Chapter 0715 min readReviewed 31 August 2026

Orchestration: from one engine to a shared fleet

Understand what the inference engine, Ray, Kubernetes, GPU Operator, Kueue, and Volcano each own.

On this page
  1. The stack
  2. Serving engines
  3. Cluster scheduling
  4. When to add a layer
Layer ownership

Orchestration is several control loops, not one product

Each layer owns a different unit: request, model replica, job, pod, device, or physical node. Add a layer only when its problem exists.

TrafficGateway · auth · rate limits · request routing
ApplicationModel routing · session/prefix affinity · Ray Serve when needed
EnginevLLM · SGLang · TensorRT-LLM · scheduler · KV manager
Workload admissionDeployment or job · Kueue / Volcano for queued work
ClusterKubernetes scheduler · autoscaler · topology placement
DeviceGPU Operator / device plugin · driver · runtime · telemetry
HardwareGPU · HBM · PCIe / scale-up fabric · network · power / cooling
The request scheduler

Choose the serving engine with the model and feature matrix

EngineStrong starting fitStrengthsCheck
vLLMGeneral open-source baselineBroad model/hardware support, PagedAttention, batching, cache, quantization and parallelismFast-moving compatibility matrix and feature combinations
SGLangPrefix-heavy, structured, agentic and multi-turn programsRadixAttention, cache-aware execution, structured generationBenefit depends on real prefix/control-flow reuse
TensorRT-LLMNVIDIA-only performance engineeringPlatform kernels/formats, in-flight batching, KV tooling, detailed benchmarkingGreater vendor coupling and build/configuration complexity
TGIExisting deployments already operating itMature API, metrics and tensor parallelismOfficially maintenance mode; do not make it the default greenfield choice
  1. Verify the exact model architecture.Multimodal, embeddings, structured output, LoRA, speculation, and custom ops can narrow the field.
  2. Verify the GPU and precision.A format listed by the model is not necessarily accelerated by the engine on that generation.
  3. Replay one production trace on two viable engines.Pin versions and tune each fairly.
  4. Select by operations as well as goodput.Startup, upgrades, metrics, failure behavior, and team familiarity belong in the score.
Devices and jobs

Kubernetes allocates devices; queueing systems allocate opportunity

Kubernetes + device plugin

Exposes GPUs as integer extended resources and places pods. In a heterogeneous fleet, request model, memory class, topology, and sharing mode through labels/affinity - not merely “one GPU.”

GPU Operator

Automates NVIDIA drivers, container toolkit, device plugin, feature discovery, MIG management, and DCGM telemetry on supported combinations. It does not choose your model topology.

Kueue

Admits queued jobs against quota and resource flavors, supports fair sharing, preemption and topology-aware scheduling, then hands admitted pods to the ordinary scheduler.

Volcano

Adds HPC/batch scheduling policy such as gang scheduling, queues, DRF, bin packing, and backfill. Useful when distributed jobs must start together.

Interactive inference. Keep warm Deployments or StatefulSets with explicit minimum capacity, readiness gates, load shedding, and request-level autoscaling signals.

Training and offline batch. Queue whole jobs, reserve the required topology together, checkpoint durably, and allow fair sharing or preemption only where the workload can recover.

Complexity gate

Add the next layer when a named failure repeats

Observed problemAdd or changeDo not add when
One engine cannot fit the modelIntra-node TP; then PP across nodes if requiredA larger-memory single GPU is cheaper and passes
Replica routing, multi-model graphs, or custom autoscaling is hardRay Serve or an equivalent application orchestratorOne Deployment and service already meets the need
Teams fight over queued GPU jobsKueue quotas/resource flavors/fair sharingThe workload is always-on interactive inference
Distributed jobs deadlock waiting for the rest of the gangVolcano or gang/all-or-nothing admissionJobs are independent single-pod work
Long prompt prefill ruins decode tailsTune chunking first; evaluate phase disaggregationNo measured phase interference exists
Cold autoscaling misses the SLOWarm minimum replicas, pre-pulled images/weights, faster initializationScale-to-zero latency is acceptable