Frequently Asked Questions
Common questions and answers about LoKO.
General Questions
Section titled “General Questions”What is LoKO?
Section titled “What is LoKO?”LoKO (Local Kubernetes Oasis) is a Python CLI tool that simplifies local Kubernetes development with Kind. It provides:
- One-command cluster creation
- Automatic DNS and TLS configuration
- Pre-configured workload catalog (databases, caches, etc.)
- Local container registry
- Comprehensive workload management
See Overview for details.
How is LoKO different from Minikube/k3d?
Section titled “How is LoKO different from Minikube/k3d?”| Feature | LoKO | Minikube | k3d |
|---|---|---|---|
| Base | Kind | VM/Docker | k3s in Docker |
| DNS | Automatic (dnsmasq) | Manual | Manual |
| TLS | Automatic (cfssl + local trust install) | Manual | Manual |
| Registry | Built-in (Zot) | Addon | Manual |
| Workloads | Catalog system | Manual | Manual |
| Config | Single YAML | CLI flags | CLI flags |
LoKO focuses on developer experience with minimal configuration.
Do I need Docker Desktop?
Section titled “Do I need Docker Desktop?”Yes, LoKO requires Docker. On macOS:
- Docker Desktop (recommended)
- OrbStack (alternative)
- Colima (alternative)
On Linux, Docker Engine is sufficient.
Can I use LoKO for production?
Section titled “Can I use LoKO for production?”No. LoKO is designed for local development only. For production:
- Use managed Kubernetes (GKE, EKS, AKS)
- Use production-grade distributions (k8s, k3s, RKE)
- Follow security best practices
Installation
Section titled “Installation”How do I install LoKO?
Section titled “How do I install LoKO?”# Using pippip install getloko
# Using uv (recommended)uv tool install getloko
# Using pipxpipx install getlokoSee Installation Guide for details.
What are the prerequisites?
Section titled “What are the prerequisites?”Required tools:
- Docker - Container runtime
- Git - Required for GitOps repo seeding
- Kind - Kubernetes in Docker
- Helm - Package manager
- kubectl - Kubernetes CLI
- cfssl - Certificate generation toolkit
Optional:
- helmfile - Declarative Helm deployments
LoKO can help install missing tools:
loko check prerequisitesSee Prerequisites for details.
Which Python version do I need?
Section titled “Which Python version do I need?”Python 3.10 or later
Check your version:
python --version # Should be 3.10+Configuration
Section titled “Configuration”Where is the configuration file?
Section titled “Where is the configuration file?”LoKO configuration lives in a YAML file, usually loko.yaml.
For existing environments, many runtime commands no longer require you to be in that directory. They resolve the target environment in this order:
- explicit
--config/-c - active environment from inventory
- local
./loko.yaml
Generate it with:
loko config generateSee Configuration Guide for details.
Can I have multiple environments?
Section titled “Can I have multiple environments?”Yes! Each environment is independent:
# Create dev environmentloko env create -c loko-dev.yaml
# Create staging environmentloko env create -c loko-staging.yaml
# Activate one as currentloko activate devloko status
# Or target a specific config directlyloko status -c loko-staging.yamlUse loko inventory list to see known environments and which one is active.
How do I customize workload settings?
Section titled “How do I customize workload settings?”Edit loko.yaml:
workloads: system: - name: postgres enabled: true config: values: primary: extendedConfiguration: | max_connections = 500See Workload Management for details.
DNS & Networking
Section titled “DNS & Networking”How does DNS work?
Section titled “How does DNS work?”LoKO runs a dedicated dnsmasq container that serves your local domain:
- LoKO generates dnsmasq host records from deployed workloads and system endpoints
- The dnsmasq container listens on
network.dns-porton your host IP - The OS resolver (for example
/etc/resolver/dev.meon macOS) forwards*.dev.mequeries to that dnsmasq endpoint - dnsmasq resolves hostnames directly to your configured local IP
Example:
# Resolves to clusterping postgres.dev.mecurl https://app.dev.meSee Network & DNS for details.
Can I use a different domain?
Section titled “Can I use a different domain?”Yes! Edit loko.yaml:
network: domain: "local.dev" # Instead of dev.meThen recreate:
loko env recreateWhy can’t I access services from other devices?
Section titled “Why can’t I access services from other devices?”By default, LoKO is localhost-only. For network access:
- Enable tunnel (Cloudflare Tunnel):
tunnel: enabled: true token: "your-token"- Or use hostPort for specific services
DNS not working on macOS?
Section titled “DNS not working on macOS?”Try:
# Check DNS container and resolver stateloko dns status
# Check resolvercat /etc/resolver/dev.me
# Run DNS diagnostic checksloko config dns-check
# Recreate DNSloko dns recreateWorkloads
Section titled “Workloads”How do I deploy a database?
Section titled “How do I deploy a database?”# Add PostgreSQLloko workloads add postgres --now
# Connection details in .loko-secrets.txtcat .loko-secrets.txtSee Deploy Database Tutorial for details.
Where are workload credentials?
Section titled “Where are workload credentials?”Automatically generated credentials are saved to:
.loko-secrets.txtExample:
=== postgres ===POSTGRES_PASSWORD: randomly-generated-passwordCan I use custom Helm charts?
Section titled “Can I use custom Helm charts?”Yes. Define them as user workloads in loko.yaml and reference any extra Helm repositories under workloads.helm-repositories:
workloads: helm-repositories: - name: my-repo url: https://charts.example.com/ user: - name: my-app enabled: true config: repo: ref: my-repo chart: my-chart version: 1.0.0 values: {}How do I update workload versions?
Section titled “How do I update workload versions?”# Update catalog versionsloko catalog update
# Review changesloko catalog update --dry-run
# Re-sync workloads with the updated catalogloko workloads deploy postgresTroubleshooting
Section titled “Troubleshooting”Cluster won’t create
Section titled “Cluster won’t create”Symptoms: loko env create fails
Solutions:
- Check Docker:
docker ps # Should work- Check ports:
loko check ports- Check existing clusters:
kind get clusterskind delete cluster --name loko-dev-me- Check logs:
loko --debug env createWorkload deployment fails
Section titled “Workload deployment fails”Symptoms: loko workloads deploy fails
Solutions:
- Check cluster status:
loko status- Check Helm:
helm list -A- Check pod logs:
kubectl logs -n loko-workloads <pod-name>- Re-deploy:
loko workloads deploy postgres“Port already in use” error
Section titled ““Port already in use” error”Symptoms: Ports 80/443/5453 conflict
Solutions:
- Find what’s using the port:
lsof -i :80lsof -i :443- Stop conflicting service:
# Example: Stop Apachesudo apachectl stopDNS runs in-cluster via an auto-selected DNS port — no host port conflict possible for DNS.
Registry push fails
Section titled “Registry push fails”Symptoms: Cannot push to cr.dev.me
Solutions:
- Check registry is running:
loko statuskubectl get pods -n loko-components | grep registry- Check Docker daemon.json:
{ "insecure-registries": ["cr.dev.me:5000"]}-
Restart Docker after changing daemon.json
-
Test registry:
docker pull alpinedocker tag alpine cr.dev.me:5000/alpinedocker push cr.dev.me:5000/alpineSee Registry Guide for details.
How do I completely reset?
Section titled “How do I completely reset?”# Destroy cluster and remove loko.yamlloko env clean --yes
# Start freshloko config generateIf you only want to remove the cluster but keep loko.yaml, use:
loko env destroy --forcePerformance
Section titled “Performance”Cluster is slow
Section titled “Cluster is slow”Causes: Resource constraints, too many workloads
Solutions:
- Check resource usage:
loko status --verbose- Reduce worker nodes:
cluster: workers: 1 # Instead of 2-3- Disable unused workloads:
loko workloads disable mysqlloko workloads disable postgresloko workloads disable mongodb- Increase Docker resources (Docker Desktop → Settings → Resources)
Deployment takes too long
Section titled “Deployment takes too long”Causes: Image pulls, resource limits
Solutions:
- Enable registry mirror:
registry-mirror: enabled: true registries: - docker.io- Pre-pull images:
# Pulls images before deploymentloko workloads deploy --allAdvanced Usage
Section titled “Advanced Usage”Can I use LoKO in CI/CD?
Section titled “Can I use LoKO in CI/CD?”Limited support. LoKO is designed for local development, but you can:
# In CI pipelineloko env createloko workloads deploy --all# Run testsloko env destroyNote: Requires Docker-in-Docker or similar setup.
Can I extend LoKO with plugins?
Section titled “Can I extend LoKO with plugins?”Yes! LoKO has a plugin system:
# Create plugin packagefrom loko.plugins import CatalogProvider
class MyPlugin: def get_catalog_extension(self): return LokoCatalog(...)How do I backup my environment?
Section titled “How do I backup my environment?”# Backup configurationcp loko.yaml loko.yaml.backupcp -r ~/.loko ~/.loko.backup
# Backup secretscp .loko-secrets.txt .loko-secrets.txt.backup
# Backup persistent data (optional)# Use Velero or similar toolsCan I run LoKO on Windows?
Section titled “Can I run LoKO on Windows?”Limited support. Requirements:
- WSL2 (Windows Subsystem for Linux)
- Docker Desktop for Windows
- Install LoKO inside WSL2
Not supported: Native Windows (PowerShell/CMD)
Getting Help
Section titled “Getting Help”Where can I get help?
Section titled “Where can I get help?”- Documentation: https://getloko.github.io/
- GitHub Issues: https://github.com/getloko/loko/issues
- GitHub Discussions: https://github.com/getloko/loko/discussions
How do I report a bug?
Section titled “How do I report a bug?”- Check existing issues
- Run with
--debug:
loko --debug env create- Create issue with:
- LoKO version (
loko version) - OS and Docker version
- Full error message
- Steps to reproduce
- LoKO version (
How can I contribute?
Section titled “How can I contribute?”Contributions are welcome! You can help by:
- Reporting bugs on GitHub Issues
- Suggesting features on GitHub Discussions
- Improving documentation
- Submitting pull requests
See the Contributing Guide for details.
Getting Support
Section titled “Getting Support”LoKO-Specific Issues
Section titled “LoKO-Specific Issues”For issues specific to LoKO:
- Bug reports: GitHub Issues
- Feature requests: GitHub Issues
- Questions: GitHub Discussions
- Documentation: https://getloko.github.io/
When reporting bugs, include:
- LoKO version (
loko --version) - Operating system and Docker version
- Full error message or debug output (
loko --debug <command>) - Steps to reproduce
General Kubernetes Questions
Section titled “General Kubernetes Questions”We focus on LoKO-specific issues. For general Kubernetes questions, these resources may help:
- Kubernetes Documentation: https://kubernetes.io/docs/
- Kind Documentation: https://kind.sigs.k8s.io/
- Kubernetes Slack: https://kubernetes.slack.com/
- Stack Overflow: Tag your questions with
kubernetes
Helm and Helmfile Questions
Section titled “Helm and Helmfile Questions”For Helm chart and Helmfile configuration questions:
- Helm Documentation: https://helm.sh/docs/
- Helm Community: https://helm.sh/community/
- Helmfile Documentation: https://helmfile.readthedocs.io/
Tool Installation Issues
Section titled “Tool Installation Issues”If you’re having trouble installing prerequisites (Docker, kubectl, etc.), refer to the official documentation:
- Docker Desktop: https://docs.docker.com/desktop/
- Docker Engine: https://docs.docker.com/engine/install/
- kubectl: https://kubernetes.io/docs/tasks/tools/
- Helm: https://helm.sh/docs/intro/install/
- Kind: https://kind.sigs.k8s.io/docs/user/quick-start/
- cfssl: https://github.com/cloudflare/cfssl
See Also
Section titled “See Also”- Troubleshooting Guide - Detailed troubleshooting
- Commands Reference - All CLI commands
- User Guide - Complete user documentation
- Tutorials - Step-by-step guides