Common Issues¶
This page covers common issues you may encounter and how to resolve them.
Installation Issues¶
Command Not Found: dk¶
Symptom: Running dk returns "command not found"
Cause: The dk binary is not in your PATH
Solution:
# Reinstall to ~/go/bin (default)
make install
# Verify it's on your PATH
which dk
# If ~/go/bin is not on your PATH, add it
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.zshrc
source ~/.zshrc
# Or install to a directory already on your PATH
make install DESTDIR=/usr/local/bin
Build Fails with Go Errors¶
Symptom: make build fails with Go compilation errors
Cause: Wrong Go version or missing dependencies
Solution:
# Verify Go version (needs 1.22+)
go version
# Download dependencies
go mod download
# Clear module cache if needed
go clean -modcache
go mod download
Permission Denied on Binary¶
Symptom: Running dk gives "permission denied"
Solution:
Development Stack Issues¶
dk dev up Fails¶
Symptom: dk dev up fails to start services
Common Causes:
-
Docker not running
-
Port conflicts
-
Previous containers not cleaned up
Kafka Connection Refused¶
Symptom: Pipeline can't connect to Kafka at localhost:9092
Solutions:
-
Wait for Kafka to be ready
-
Check Kafka logs
-
Verify Kafka is accepting connections
MinIO Access Denied¶
Symptom: S3 operations fail with access denied
Solution:
# Verify MinIO is running
dk dev status
# Check credentials (default: minioadmin/minioadmin)
mc alias set local http://localhost:9000 minioadmin minioadmin
# Create bucket if it doesn't exist
mc mb local/my-bucket
Marquez Not Showing Lineage¶
Symptom: Lineage events don't appear in Marquez UI
Solutions:
-
Verify Marquez is healthy
-
Check environment variables
-
Run pipeline and check events
Pipeline Issues¶
dk lint Fails¶
Symptom: dk lint returns validation errors
Common Errors:
| Error | Cause | Fix |
|---|---|---|
E001: metadata.name is required | Missing name | Add metadata.name to dk.yaml |
E004: invalid name format | Uppercase/special chars | Use lowercase and hyphens only |
E010: store not found | Missing store reference | Add a Store manifest with the referenced name |
E025: pii=true requires sensitivity | Missing classification | Add sensitivity level |
Example fixes:
# Fix E001/E004 - invalid name
metadata:
name: my-pipeline # lowercase, hyphens only
# Fix E010 - add missing store
# store.yaml
apiVersion: datakit.infoblox.dev/v1alpha1
kind: Store
metadata:
name: local-events
spec:
type: kafka-topic
connection:
brokers: localhost:9092
topic: events
# Fix E025 - add sensitivity
outputs:
- name: data
classification:
pii: true
sensitivity: confidential # Add this
dk run Fails Immediately¶
Symptom: Pipeline starts but exits immediately
Solutions:
-
Check logs
-
Run with debug
-
Common causes:
- Missing environment variables
- Can't connect to input sources
- Syntax errors in pipeline code
dk run Timeout¶
Symptom: Pipeline times out before completing
Solution:
# Increase timeout
dk run ./my-pipeline --timeout 60m
# Or set default in config
# ~/.dk/config.yaml
defaults:
timeout: 60m
No Data Flowing¶
Symptom: Pipeline runs but processes no records
Debugging steps:
-
Check input has data
-
Check consumer group offset
-
Check bindings
- Verify topic name matches
- Check consumer group setting
- Verify offset reset policy
Publishing Issues¶
Authentication Failed¶
Symptom: dk publish fails with authentication error
Solution:
# For GitHub Container Registry
echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_USER --password-stdin
# For Docker Hub
docker login
# Set in config
export DK_REGISTRY_USER=myuser
export DK_REGISTRY_TOKEN=mytoken
Push Denied¶
Symptom: dk publish says push denied
Common Causes:
- No write access to registry
- Verify you have push permissions
-
Check repository/package visibility settings
-
Wrong registry URL
-
Token expired
Package Already Exists¶
Symptom: Can't push because version exists
Cause: OCI artifacts are immutable
Solution:
Promotion Issues¶
PR Not Created¶
Symptom: dk promote doesn't create a PR
Solutions:
-
Check GitHub token
-
Check GitOps repository
-
Check network connectivity
PR Failed CI¶
Symptom: Promotion PR fails CI checks
Solutions:
- Check the PR for failure details
- Run lint locally first:
- Verify package exists in registry:
Sync Failed in ArgoCD¶
Symptom: PR merged but deployment not synced
Check:
- ArgoCD application status
- Kubernetes cluster connectivity
- Resource quotas/limits
Performance Issues¶
Pipeline Running Slowly¶
Optimization strategies:
-
Increase resources
-
Increase batch size
-
Check I/O bottlenecks
- Use local SSDs
- Increase network throughput
- Use compression
High Memory Usage¶
Solution:
- Process in smaller batches
- Use streaming instead of loading all data
- Increase memory limits:
Registry Cache Issues (k3d Runtime)¶
Cache Container Not Starting¶
Symptom: dev-registry-cache container fails to start
Solutions:
-
Check Docker resources
-
Check for port conflicts
-
Inspect container logs
-
Force cache rebuild
Image Pulls Still Slow¶
Symptom: Cache is running but images aren't being cached
Solutions:
-
Verify cache is being used
-
Check cache hit rate
-
Ensure cluster uses the registry config
Cache Not Created in CI¶
Symptom: Cache doesn't start in CI environment
Cause: This is expected behavior. The registry cache is automatically skipped in CI to avoid complications.
Detection: The following environment variables trigger CI mode: - CI=true - GITHUB_ACTIONS=true - JENKINS_URL (any value)
Solution: If you need the cache in CI, unset these variables (not recommended).
"Network not found" Error¶
Symptom: Container fails to start with network error
Solution:
# Create the network manually
docker network create devcache
# Or remove and let it recreate
docker network rm devcache
dk dev up --runtime=k3d
Lineage Issues¶
Missing Upstream/Downstream¶
Symptom: Lineage graph shows orphan nodes
Causes:
- Different namespaces
-
Packages should use the same namespace for linked lineage
-
Binding name mismatch
-
Never ran successfully
- Only successful runs emit complete lineage
Stale Lineage¶
Symptom: Lineage shows old data
Solution:
# Planned: dk lineage my-pipeline --refresh
# For now, query Marquez directly:
curl http://localhost:5000/api/v1/namespaces/default/jobs/my-pipeline/runs
Getting More Help¶
If you can't resolve your issue:
-
Check debug logs
-
Search existing issues
-
Open a new issue
-
Include: command, error message, environment details
-
Contact the team
- Slack: #datakit-support
- Email: datakit@example.com
See Also¶
- FAQ - Frequently asked questions
- CLI Reference - Command documentation
- Configuration - Config options