GoogleContainerTools/skaffold · error
STATUSCHECK_INTERNAL_ERROR
STATUSCHECK_INTERNAL_ERROR
Error message
%d/%d deployment(s) failed
What it means
After watching all deployments, Skaffold found at least one whose status check failed. It builds this '%d/%d deployment(s) failed' message and returns STATUSCHECK_INTERNAL_ERROR (or a more specific code if one was recorded). This is the definitive 'your deployment is not healthy' signal from the status checker.
Source
Thrown at pkg/skaffold/kubernetes/status/status_check.go:454
}
r.MarkComplete()
return
}
}
}
}
func getSkaffoldDeployStatus(ctx context.Context, c *counter, sc proto.StatusCode) (proto.StatusCode, error) {
if c.total == int(c.cancelled) && c.total > 0 {
err := fmt.Errorf("%d/%d deployment(s) status check cancelled", c.cancelled, c.total)
return proto.StatusCode_STATUSCHECK_USER_CANCELLED, err
}
// return success if no failures find.
if c.failed == 0 {
return proto.StatusCode_STATUSCHECK_SUCCESS, nil
}
// construct an error message and return appropriate error code
err := fmt.Errorf("%d/%d deployment(s) failed", c.failed, c.total)
if sc == proto.StatusCode_STATUSCHECK_SUCCESS || sc == 0 {
log.Entry(ctx).Debugf("found statuscode %s. setting skaffold deploy status to STATUSCHECK_INTERNAL_ERROR.", sc)
return proto.StatusCode_STATUSCHECK_INTERNAL_ERROR, err
}
log.Entry(ctx).Debugf("setting skaffold deploy status to %s.", sc)
return sc, err
}
func getDeadline(d int) time.Duration {
if d > 0 {
return time.Duration(d) * time.Second
}
return DefaultStatusCheckDeadline
}
func (s *monitor) printStatusCheckSummary(out io.Writer, r *resource.Resource, c counter) {
ae := r.Status().ActionableError()
if r.StatusCode() == proto.StatusCode_STATUSCHECK_USER_CANCELLED {View on GitHub (pinned to a1189de023)
Solutions
- Run `kubectl describe deployment <name>` and `kubectl logs` on the pods to find the root cause (crash, probe failure, image pull error)
- Fix the manifest causing the unhealthy rollout (correct image tag, resource requests, probe paths, missing secrets/configmaps)
- Increase deploy.statusCheckDeadlineSeconds if the deployment is healthy but slower than the deadline
- Re-run `skaffold deploy` after fixing and confirm `kubectl rollout status` passes
Example fix
// before (manifest)
readinessProbe:
httpGet:
path: /wrongpath
port: 8080
// after
readinessProbe:
httpGet:
path: /healthz
port: 8080 Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check deployment health before running the status check
out, err := exec.Command("kubectl", "get", "deployments", "-n", ns, "--no-headers").CombinedOutput()
if err != nil || strings.Contains(string(out), "0/1") {
log.Printf("deployment not ready yet: %s", out)
} Try / catch
err := runSkaffoldDeploy(ctx)
if err != nil {
var scErr *skaffold.StatusCodeError
if errors.As(err, &scErr) && scErr.Code == proto.StatusCode_STATUSCHECK_INTERNAL_ERROR {
log.Printf("status check failed: %v; inspect pods:", err)
exec.Command("kubectl", "get", "pods", "-n", ns).Run()
}
} Prevention
- Validate manifests and probes locally (kubectl apply --dry-run=server) before deploying
- Check image tags and registry credentials to avoid ImagePullBackOff
- Set resource requests that fit the cluster's allocatable capacity
- Watch pod events during deploys to catch CrashLoopBackOff early
When it happens
Trigger: `skaffold deploy`/`run`/`dev` completes the deploy step, then during the status check one or more Deployments fail to become Available within the deadline — e.g. CrashLoopBackOff, unschedulable pods, failing readiness probes — so c.failed > 0.
Common situations: Bad image/tag pushed to the cluster; insufficient CPU/memory causing Pending pods; misconfigured liveness/readiness probes; missing ConfigMaps/Secrets crashing containers; imagePullBackOff from registry auth problems.
Related errors
- rs.ae.Message (actionable error message from status check)
- STATUSCHECK_POD_INITIALIZING
- waiting for init container %s to complete
- STATUSCHECK_UNKNOWN
- STATUSCHECK_KUBECTL_CLIENT_FETCH_ERR
AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05).
Data as JSON: /api/errors/d6fca3ab508446ce.
Report an issue: GitHub.