-
Notifications
You must be signed in to change notification settings - Fork 47
Troubleshooting
Workshop-wide troubleshooting. Each module also has its own "Troubleshooting" section with scenario-specific fixes — check there first, then come back here for cross-cutting issues.
| Symptom | Likely Cause | First thing to try |
|---|---|---|
command not found: python / kubectl / kind / go |
Tool not installed or not on PATH
|
Re-run the Module 0 install step for that tool; open a new shell |
ModuleNotFoundError |
Virtual env not active or deps not installed | Activate venv, then pip install -r requirements.txt
|
Port XXXX already in use |
Previous service still running | See Port already in use |
Docker commands fail / Cannot connect to the Docker daemon
|
Docker Desktop not running | Start Docker Desktop and wait for the whale icon to go steady |
kubectl hangs or times out |
kind cluster not running |
kind get clusters, re-create if missing |
Pods stuck ImagePullBackOff on kind |
Image not loaded into kind | kind load docker-image <name> --name mlops-workshop |
| Hugging Face download fails / times out | Network / proxy | Retry, increase timeout, or pre-download |
| Wiki links don't open | Pre-April 2026 wiki had double .md extensions |
Already fixed; pull the latest wiki |
Activate the venv before every session and before pip install:
# macOS / Linux / WSL
source venv/bin/activate
# Windows (PowerShell)
venv\Scripts\Activate.ps1
# Windows (cmd.exe)
venv\Scripts\activate.batIf python doesn't work, try python3 (macOS/Linux). If neither exists, re-install Python and tick "Add Python to PATH" on Windows.
After activation, always upgrade pip first:
pip install --upgrade pip- Apple Silicon: some ML wheels require Xcode CLI tools →
xcode-select --install - Windows: install Build Tools for Visual Studio (C++ build tools) if a wheel falls back to source
- Always prefer pre-built wheels — if
torchinstalls from source you'll be waiting 30+ min
- macOS/Windows: open Docker Desktop, wait until it reports "Running"
- WSL 2: ensure Docker Desktop's "Use the WSL 2 based engine" is enabled and your distro is integrated (Settings → Resources → WSL Integration)
kind get clusters
kind delete cluster --name mlops-workshop
kind create cluster --config modules/module-0/kind.yamlKind nodes don't share your Docker daemon — you must load local images explicitly:
kind load docker-image <image>:<tag> --name mlops-workshop
kubectl rollout restart deployment/<name>Between modules, free space:
docker system prune -a --volumesAllocate at least 8 GB RAM and 20 GB disk to Docker Desktop (Settings → Resources).
Find what's holding the port, then stop it or use another.
# macOS / Linux
lsof -i :5000
kill -9 <PID>
# Windows (PowerShell)
Get-NetTCPConnection -LocalPort 5000 | Select-Object OwningProcess
Stop-Process -Id <PID> -Force
# Windows (cmd.exe)
netstat -ano | findstr :5000
taskkill /PID <PID> /FCommon workshop ports: 5000 (MLflow), 3000 (BentoML), 8080 (Kubeflow / kubectl port-forward), 9090 (Prometheus), 3001 (Grafana).
If you'd rather run on a different port, most services take --port:
mlflow ui --port 5001- UI shows nothing: you haven't logged any runs yet; run a training script first.
-
mlflowcommand not found after install: restart your shell or re-activate your venv. -
Experiment "Default" unexpected: you forgot
mlflow.set_experiment("name")— add it beforemlflow.start_run(). -
FileNotFoundError: mlruns: MLflow writes locally by default; make sure you're running from the module's working directory so all runs land in the samemlruns/folder.
For deeper MLflow issues see Module 1 Troubleshooting.
-
bentoml servefails to find service: you must run it from the directory containingservice.py. -
Pydantic validation errors: BentoML 1.4+ requires Pydantic v2 syntax (
@field_validator, not@validator). See Module 2 Troubleshooting. - Model not found: make sure the MLflow model URI points to the correct registered model/alias.
-
Pod stuck
Pending: check resource requests — kind has limited CPU/memory.kubectl describe pod <name>will show the scheduler reason. -
Pod
CrashLoopBackOff:kubectl logs <pod> --previousfor last crash output. -
Service not reachable via
localhost: usekubectl port-forward svc/<name> <port>:<port>rather than relying on NodePort. -
HPA stuck at
unknown/80%: metrics-server isn't installed on kind by default; see Module 3 Troubleshooting.
Kubeflow install takes 5–10 minutes on first run and is the most fragile step in the workshop.
-
install-kubeflow.shtimes out waiting for pods: runkubectl get pods -n kubeflow -win another terminal and watch forImagePullBackOfforCrashLoopBackOff. - MinIO CrashLoopBackOff: known compatibility issue; the install script applies a patch — re-run it.
-
UI unreachable at
localhost:8080:kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80must stay running in a terminal.
See Module 5 Troubleshooting for component-level fixes.
-
Grafana default login:
admin/admin(you'll be prompted to change). -
No metrics in Prometheus: check
/targetspage — your service must expose/metricson the port Prometheus scrapes. - See Module 6 Troubleshooting.
-
ghcr.iopush denied: workflow needspackages: writepermission in the job. -
Workflow doesn't trigger: check branch filter in
on.push.branches. - See Module 7.
-
.shscripts won't execute natively. Use WSL 2 Ubuntu terminal (recommended) or Git Bash. Purecmd.exe/ PowerShell without WSL won't work for the workshop's setup scripts. -
Line endings corrupt shell scripts. If
.shfiles givebad interpreter: /bin/bash^M, Git converted LF → CRLF. The repo's.gitattributesprevents this for fresh clones; for existing clones rungit config core.autocrlf inputand re-clone. -
Path separators. Use forward slashes
/in config files (YAML, Python, shell) — they work on Windows too. Only use backslashes in Windows-native terminals. -
localhostinside WSL. Docker Desktop on Windows bridgeslocalhostbetween WSL and host — if it's flaky, tryhttp://host.docker.internalfrom inside containers.
Full Windows setup instructions: Module 0 → Option C: Windows.
- Re-read the module's own "Troubleshooting" section.
-
git status/git log— make sure you're on the right branch and up to date. - Reset the environment for that module: delete the kind cluster,
docker system prune, rebuild. - Ask the facilitator with: the exact command you ran, the full error output, and your OS + Python version.