- Port-forward the router (the router’s front door) and Prometheus in two separate terminals
- Confirm the Helm release and inspect running pods
- Send an OpenAI-format completion request to the router
- Verify the request in Prometheus metrics
Open two terminal windows. In one run the port-forward for the router; in the other run the port-forward for Prometheus. Leave both running while you follow this lesson.
prometheus.)
When both port-forwards run, the router will be reachable at http://localhost:8000 and Prometheus at http://localhost:9090.
Quick reference — services and local ports:
Inspect Helm and the release installed in the namespace:
- The Helm release name is
quickstart(this chart installed the router). - The router’s service you port-forwarded is named
quickstart-epp(release + job label).
- There are three model server pods (copies of Qwen) and one router pod.
- This cluster is running in standalone mode: there is no Gateway pod or Gateway API installed. Instead, Envoy (the proxy) is colocated inside the router pod next to the EPP (endpoint picker), and the router exposes that Envoy via the
quickstart-eppService. In other words: proxy + picker in the same pod, exposed as a standard K8s Service. - The router watches a small llm-d resource whose selector matches labels on the model pods. That selector builds the inference pool dynamically — no manual server inventory is required.
Many models on Hugging Face require an account and access token to download. The quickstart Helm chart provides a place to store such tokens as a Kubernetes Secret. This Quickstart used a public model (Qwen) so no secret is present. If you run gated models on your cluster, create the Kubernetes Secret but never print its value to the terminal.
jq):
- Envoy (inside the router pod) accepted the HTTP request at
localhost:8000. - The EPP evaluated and scored the three available model server endpoints, picked one, and forwarded the request.
- A model server produced the completion tokens and returned the response to the router, which returned it to your curl client.
localhost:9090, query the router’s view of the pool. The metric llm_d_epp_ready_endpoints reports how many ready endpoints the router knows about. A representative metric scrape immediately after the curl:
- The router agrees with
kubectl get pods— there are three ready model servers behind the frontend. - If you run a Prometheus query for the request counter (e.g., the request-handling counter for the EPP) after the curl, you should see that counter increment by one.