Troubleshooting
Diagnose and fix common issues with a self-hosted Scalekit deployment on Kubernetes.
Check pod status first
Section titled “Check pod status first”Before investigating specific errors, confirm which pods are unhealthy:
kubectl get pods -n scalekitkubectl describe pod <pod-name> -n scalekitkubectl logs <pod-name> -n scalekit --tail=100For the Scalekit pod (which runs multiple containers), specify the container:
# Main auth servicekubectl logs <pod-name> -n scalekit -c scalekit --tail=100
# Dashboardkubectl logs <pod-name> -n scalekit -c dashboard --tail=100
# Svixkubectl logs <pod-name> -n scalekit -c svix --tail=100Helm install failures
Section titled “Helm install failures”ImagePullBackOff or ErrImagePull
Section titled “ImagePullBackOff or ErrImagePull”Cause: The cluster cannot pull images from ar.scalekit.cloud — usually a missing or incorrect registry secret.
Fix:
- Confirm the
artifact-registry-secretexists:Terminal window kubectl get secret artifact-registry-secret -n scalekit - If missing, re-run the setup script or recreate it manually:
Terminal window kubectl create secret docker-registry artifact-registry-secret \--docker-server=ar.scalekit.cloud \--docker-username=oauth2accesstoken \--docker-password=<your-registry-token> \-n <namespace> - Verify the token is current — registry tokens from distr.sh may expire.
Migration hook fails or times out
Section titled “Migration hook fails or times out”Cause: The db-migrations pre-install hook cannot connect to PostgreSQL.
Fix:
- Check the migration job logs:
Terminal window kubectl get jobs -n scalekitkubectl logs job/scalekit-db-migrations -n scalekit - Confirm the
DATABASE_URLin thedb-migrationssecret is correct and the database host is reachable from the cluster. - Confirm the database and user exist and the user has full privileges.
Pod stuck in CrashLoopBackOff
Section titled “Pod stuck in CrashLoopBackOff”Cause: A required secret key is missing, or a configuration value is incorrect.
Fix:
- Check the pod logs for the startup error:
Terminal window kubectl logs <pod-name> -n scalekit -c scalekit --previous - Common causes:
- Missing key in
authentication-secret— re-runsetup-secrets.sh database.hostorredis.hostinvalues.yamlis unreachable from the clusterdomaininvalues.yamldoes not match the gateway hostname
- Missing key in
Gateway issues
Section titled “Gateway issues”Gateway has no external IP
Section titled “Gateway has no external IP”Cause: The GatewayClass is not installed, or the Gateway controller is not running.
Fix:
kubectl get gateway -n scalekitkubectl describe gateway scalekit -n scalekitCheck that gateway.className in your values.yaml matches an installed GatewayClass:
kubectl get gatewayclassOn GKE, confirm the GKE Gateway controller is enabled in your cluster settings.
Get support
Section titled “Get support”If the issue is not covered here:
- Community: Join the Scalekit Slack community in the
#self-hostedchannel.