Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article provides troubleshooting steps for common issues that might arise when deploying and running Foundry Local on Azure Local. Use the following guidance to identify and resolve problems related to certificates, GPU memory limits, model downloads, API crashes, tool calling, and support diagnostics.
Important
- Foundry Local is available in preview. Preview releases provide early access to features that are in active deployment.
- Features, approaches, and processes can change or have limited capabilities before general availability (GA).
Before you troubleshoot
Collect baseline cluster state first. These checks help you identify whether the issue is installation, runtime capacity, or API behavior.
Check core component health
Run the following commands to confirm operator, certificate, and deployment components are healthy.
kubectl get pods -n foundry-local-operator
kubectl get pods -n cert-manager
kubectl get certificates -n foundry-local-operator
kubectl get modeldeployment -A
Check events for failing workloads
Run the following command to identify scheduling, certificate, or container startup failures.
kubectl get events -A --sort-by=.lastTimestamp | tail -n 50
Pods stuck in Init or TLS secret not found
If workloads are stuck in Init state or you see errors about missing TLS secrets, validate cert-manager first.
Verify all cert-manager components are running:
kubectl get pods -n cert-managerConfirm certificates are issued and
Ready=True:kubectl get certificates -n foundry-local-operatorInspect cert-manager logs for issuance or webhook failures:
kubectl logs -n cert-manager -l app=cert-manager --tail=200
If any cert-manager component isn't healthy, resolve that condition before retrying model deployment.
Model deployment fails to start or reports GPU memory errors
If a deployment fails during startup, remains pending, or reports GPU memory pressure:
- Start with default runtime settings. Remove custom vLLM tuning and let the planner select values.
- Verify model size and context length fit available GPU VRAM.
- Increase GPU capacity when model requirements exceed current hardware.
- Validate CPU and memory requests and limits in your
ModelDeploymentspec.
Check node and pod resource pressure
Run the following commands to determine whether node-level or pod-level resource pressure is blocking startup.
kubectl describe nodes
kubectl top nodes
kubectl top pods -A
Model download is stuck or cache job fails
If model download doesn't progress or cache jobs repeatedly fail:
- Deploy a smaller model first to validate end-to-end download and startup.
- If smaller models succeed but larger models fail, inspect network path reliability.
- Check proxy, firewall, and intermediate network devices that can interrupt long-lived downloads.
Check cache and deployment events
Run the following commands to identify where model download or cache processing is failing.
Replace <deployment-name> with your model deployment name before running the following commands.
kubectl get jobs -A
kubectl describe modeldeployment <deployment-name> -n foundry-local-operator
kubectl get events -n foundry-local-operator --sort-by=.lastTimestamp
inference-operator-api pod is in CrashLoopBackOff
If the inference-operator-api pod restarts continuously:
- Check pod events for
OOMKilled. - Reduce API worker count to one worker.
- Increase API memory requests and limits.
Use the following values in extension configuration:
api:
config:
server:
workers: 1
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
Then verify restart behavior and logs:
Replace <inference-operator-api-pod> with the pod name from your environment before you run the following commands.
kubectl get pods -n foundry-local-operator
kubectl describe pod <inference-operator-api-pod> -n foundry-local-operator
kubectl logs <inference-operator-api-pod> -n foundry-local-operator --previous
Tool calling fails or produces malformed calls
If model tool calls fail, are malformed, or return unexpected structure:
- Verify the deployed model supports tool calling.
- Simplify your tool schema. Remove complex constructs incrementally, such as deep nesting, large arrays, and strict uniqueness constraints.
- Reduce the number of tools included in a single request.
- Test
tool_choicewithautoinstead of forcingrequired.
When you troubleshoot request payload shape, start from a minimal request and add complexity one field at a time.
Collect diagnostic logs for support
When opening a support request, include recent events, pod descriptions, and component logs.
Replace <deployment-name> with your model deployment name before running the following commands.
az k8s-extension troubleshoot --name foundry --namespace-list "foundry-local-operator"
kubectl get events -A --sort-by=.lastTimestamp
kubectl describe modeldeployment <deployment-name> -n foundry-local-operator
kubectl logs -n foundry-local-operator deployment/inference-operator-api --tail=500
Evaluation fails with model or judge unreachable
If an evaluation reaches the Failed phase with a message about model or judge connectivity, verify that the model deployment pods referenced in the evaluation (both the model under test and the judge model, if used) are running.
kubectl get pods -n foundry-local-operator
Common causes:
- The model pod crashed or was evicted. Check pod events by using
kubectl describe pod. - The model is still loading. Large models can take several minutes to become ready after deployment.
Pods stay Pending due to node pod limit
If pods stay in Pending state and the node has available CPU and memory, the node might have reached its maxPods limit. This setting controls the maximum number of pods a node can run. When system components consume most of the available slots, new pods can't be scheduled.
kubectl describe node <NODE_NAME>
Check the Non-terminated Pods count against the node's Allocatable pod limit. If the node is full, consider using a node pool with a higher maxPods value.