# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 apiVersion: nvidia.com/v1alpha1 kind: DynamoGraphDeployment metadata: name: vllm-disagg-planner spec: envs: - name: DYNAMO_SERVICE_CONFIG value: '{"Prometheus":{"global":{"scrape_interval":"5s"},"scrape_configs":[{"job_name":"prometheus","static_configs":[{"targets":["localhost:8000"]}]},{"job_name":"frontend","static_configs":[{"targets":["vllm-disagg-planner-frontend:8000"]}]}]}}' services: Frontend: componentType: main replicas: 1 livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 20 periodSeconds: 5 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: exec: command: - /bin/sh - -c - 'curl -s http://localhost:8000/health | jq -e ".status == \"healthy\""' initialDelaySeconds: 60 periodSeconds: 60 timeoutSeconds: 30 failureThreshold: 10 resources: requests: cpu: "16" memory: "10Gi" limits: cpu: "128" memory: "100Gi" extraPodSpec: mainContainer: image: my-registry/vllm-runtime:my-tag workingDir: /workspace/examples/backends/vllm command: - /bin/sh - -c args: - "python3 -m dynamo.frontend --http-port 8000 --kv-cache-block-size 128 --router-mode kv --router-kv-overlap-score-weight 0.0 --router-temperature 0.0 --no-router-kv-events" Planner: envFromSecret: hf-token-secret componentType: planner replicas: 1 livenessProbe: exec: command: - /bin/sh - -c - "exit 0" periodSeconds: 60 timeoutSeconds: 30 failureThreshold: 10 readinessProbe: exec: command: - /bin/sh - -c - "exit 0" initialDelaySeconds: 60 periodSeconds: 60 timeoutSeconds: 30 failureThreshold: 10 extraPodSpec: mainContainer: image: my-registry/vllm-runtime:my-tag ports: - name: metrics containerPort: 9085 command: - python3 - -m - dynamo.planner args: - --config - '{"environment": "kubernetes", "backend": "vllm", "ttft": 200, "itl": 10, "profile_results_dir": "/workspace/tests/planner/profiling_results/H200_TP1P_TP1D/", "throughput_adjustment_interval": 60, "metric_reporting_prometheus_port": 9085, "no_correction": true}' VllmDecodeWorker: envFromSecret: hf-token-secret componentType: worker subComponentType: decode replicas: 1 livenessProbe: httpGet: path: /live port: 9090 periodSeconds: 5 timeoutSeconds: 30 failureThreshold: 1 readinessProbe: httpGet: path: /health port: 9090 periodSeconds: 10 timeoutSeconds: 30 failureThreshold: 60 resources: requests: cpu: "16" memory: "20Gi" gpu: "1" limits: cpu: "128" memory: "100Gi" gpu: "1" envs: - name: DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS value: "[\"generate\"]" - name: DYN_SYSTEM_PORT value: "9090" extraPodSpec: terminationGracePeriodSeconds: 600 mainContainer: startupProbe: httpGet: path: /health port: 9090 periodSeconds: 10 failureThreshold: 60 image: my-registry/vllm-runtime:my-tag workingDir: /workspace/examples/backends/vllm command: - python3 args: - -m - dynamo.vllm - --model - nvidia/Llama-3.1-8B-Instruct-FP8 - --no-enable-prefix-caching - --block-size - "128" VllmPrefillWorker: envFromSecret: hf-token-secret componentType: worker subComponentType: prefill replicas: 1 livenessProbe: httpGet: path: /live port: 9090 periodSeconds: 5 timeoutSeconds: 30 failureThreshold: 1 readinessProbe: httpGet: path: /health port: 9090 periodSeconds: 10 timeoutSeconds: 30 failureThreshold: 60 resources: requests: cpu: "16" memory: "20Gi" gpu: "1" limits: cpu: "128" memory: "100Gi" gpu: "1" envs: - name: DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS value: "[\"generate\"]" - name: DYN_SYSTEM_PORT value: "9090" extraPodSpec: terminationGracePeriodSeconds: 600 mainContainer: startupProbe: httpGet: path: /health port: 9090 periodSeconds: 10 failureThreshold: 60 image: my-registry/vllm-runtime:my-tag workingDir: /workspace/examples/backends/vllm command: - python3 args: - -m - dynamo.vllm - --model - nvidia/Llama-3.1-8B-Instruct-FP8 - --disaggregation-mode - prefill - --kv-transfer-config - '{"kv_connector":"NixlConnector","kv_role":"kv_both"}' - --no-enable-prefix-caching - --block-size - "128"