Skip to main content

Production Readiness Challenge

Interactive version

Run the guided challenge with paste-output checks, hints, solution reveal, and private device progress at labs.k8sllm.online/challenges/production-readiness.

Challenge outcome

Make a launch decision: approve, approve with conditions, or block. The useful output is a clear risk list with owners, not a perfect score.

Objective​

Run a production readiness review for a Kubernetes LLM workload before exposing it to real users or approving a new serving runtime in the platform.

Scenario​

A model endpoint passed a functional demo. Before production traffic, the platform team must verify namespace isolation, quota, rollback, telemetry, cost ownership, and launch decision criteria.

Prerequisites​

ItemRequirement
WorkloadExisting model server deployment or equivalent test workload.
AccessPermission to inspect RBAC, NetworkPolicy, quotas, pods, rollout history, and logs.
TelemetryDashboard, metrics endpoint, or trace/log access.
Owner mapKnown workload owner, rollback owner, and SLO owner.

Tasks​

  1. Verify namespace boundaries and service account permissions.
  2. Verify resource requests, GPU limits, ResourceQuota, and LimitRange.
  3. Confirm a rollback path exists and works.
  4. Validate launch telemetry for user latency, runtime saturation, GPU pressure, and cost.
  5. Write a launch decision with accepted exceptions and owners.

Validation commands​

kubectl auth can-i get secrets --namespace default
kubectl auth can-i list pods --namespace llm-serving
kubectl -n llm-serving get networkpolicy
kubectl -n llm-serving get resourcequota
kubectl -n llm-serving get limitrange
kubectl -n llm-serving describe pod -l app=vllm-openai
kubectl -n llm-serving rollout history deployment/vllm-openai
kubectl -n llm-serving rollout status deployment/vllm-openai

Use this launch decision format:

Decision: approve, approve with conditions, or block
Primary risk:
Accepted exceptions:
Rollback owner:
SLO owner:
Review date:

Self-check checklist​

  • Workload cannot access unrelated namespaces or secrets.
  • GPU placement is explicit and quota-bound.
  • Previous revision remains deployable.
  • Dashboards or queries expose TTFT, tokens/sec, queue wait, GPU memory, and pod restarts.
  • Cost can be grouped by model, route, tenant, or workload class.
  • Exceptions have owner and review date.

Hints​

  • Do not approve a launch only because pods are ready.
  • A rollback that has never been tested is a guess.
  • If cost per request is unknown, launch volume limits should be conservative.

Expected signals​

AreaHealthy signal
SecurityNamespace has RBAC, NetworkPolicy, and secret ownership.
SchedulingPod cannot land on general-purpose nodes.
RolloutPrevious revision remains deployable.
ObservabilityIncident triage can start from dashboards and traces.
CostRequests can be grouped by model, route, tenant, or workload class.

Failure drill​

Deploy a revision with an invalid model name, confirm readiness fails, roll back, and confirm the previous model endpoint serves again.