{"record":{"id":"46bb1e34f7e8c8bf","repo":"GoogleContainerTools/skaffold","slug":"statuscheck-container-creating","errorCode":"STATUSCHECK_CONTAINER_CREATING","errorMessage":"creating container %s","messagePattern":"creating container (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/diag/validator/validator.go","lineNumber":365,"sourceCode":"\tcase p.isStable():\n\t\treturn \"\"\n\tdefault:\n\t\tif p.ae.Message != \"\" {\n\t\t\treturn p.ae.Message\n\t\t}\n\t}\n\treturn fmt.Sprintf(actionableMessage, p.namespace, p.name)\n}\n\nfunc extractErrorMessageFromWaitingContainerStatus(po *v1.Pod, c v1.ContainerStatus) (proto.StatusCode, []string, error) {\n\t// Extract meaning full error out of container statuses.\n\tswitch c.State.Waiting.Reason {\n\tcase podInitializing:\n\t\t// container is waiting to run. This could be because one of the init containers is\n\t\t// still not completed\n\t\treturn proto.StatusCode_STATUSCHECK_POD_INITIALIZING, nil, nil\n\tcase containerCreating:\n\t\treturn proto.StatusCode_STATUSCHECK_CONTAINER_CREATING, nil, fmt.Errorf(\"creating container %s\", c.Name)\n\tcase crashLoopBackOff:\n\t\t// TODO, in case of container restarting, return the original failure reason due to which container failed.\n\t\tsc, l := getPodLogs(po, c.Name, proto.StatusCode_STATUSCHECK_CONTAINER_RESTARTING)\n\t\treturn sc, l, fmt.Errorf(\"container %s is backing off waiting to restart\", c.Name)\n\tcase ImagePullErr, ImagePullBackOff, ErrImagePullBackOff:\n\t\treturn proto.StatusCode_STATUSCHECK_IMAGE_PULL_ERR, nil, fmt.Errorf(\"container %s is waiting to start: %s can't be pulled\", c.Name, c.Image)\n\tcase runContainerError:\n\t\tmatch := runContainerRe.FindStringSubmatch(c.State.Waiting.Message)\n\t\tif len(match) != 0 {\n\t\t\treturn proto.StatusCode_STATUSCHECK_RUN_CONTAINER_ERR, nil, fmt.Errorf(\"container %s in error: %s\", c.Name, trimSpace(match[3]))\n\t\t}\n\t}\n\tlog.Entry(context.TODO()).Debugf(\"Unknown waiting reason for container %q: %v\", c.Name, c.State)\n\treturn proto.StatusCode_STATUSCHECK_CONTAINER_WAITING_UNKNOWN, nil, fmt.Errorf(\"container %s in error: %v\", c.Name, c.State.Waiting)\n}\n\nfunc newPodStatus(n string, ns string, p string) *podStatus {\n\treturn &podStatus{","sourceCodeStart":347,"sourceCodeEnd":383,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/diag/validator/validator.go#L347-L383","documentation":"Raised when a container is in Waiting state with reason ContainerCreating (code STATUSCHECK_CONTAINER_CREATING): the image is pulled/being pulled but the container has not started. Skaffold reports it as a transient creation step, naming the container.","triggerScenarios":"extractErrorMessageFromWaitingContainerStatus switches on c.State.Waiting.Reason == containerCreating and returns the error; reached from getContainerStatus via getPodStatus.","commonSituations":"Slow image pulls in CI; kubelet busy setting up volumes/mounts (slow CSI driver, NFS); heavy CNI/network-plugin setup; many pods starting simultaneously; dangling sandbox (pause container) creation delays.","solutions":["Wait briefly and re-run — this state is normally transient; use kubectl describe pod to watch Events.","If it hangs for minutes, check kubelet logs and Events for volume-mount or CNI errors and fix the offending plugin/driver.","Pre-pull or reduce image size / use a faster registry or mirror to speed creation.","Verify the node's disk and network aren't saturated by other workloads."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"if cs.State.Waiting != nil && cs.State.Waiting.Reason == \"ContainerCreating\" { events, _ := client.CoreV1().Events(ns).List(ctx, eventFor(pod)); checkEventsForVolumeOrCNIErrors(events.Items) }","typeGuard":"func isContainerCreating(cs v1.ContainerStatus) bool { return cs.State.Waiting != nil && cs.State.Waiting.Reason == \"ContainerCreating\" }","tryCatchPattern":"sc, _, err := getContainerStatus(pod, cs); if sc == proto.StatusCode_STATUSCHECK_CONTAINER_CREATING { if !wait.PollImmediate(2*time.Second, 90*time.Second, func() (bool, error) { return podReady(pod), nil }); return fmt.Errorf(\"container still creating after 90s: %w\", err) }","preventionTips":["Slim images and warm registry mirrors for CI speed","Verify CSI/NFS volume drivers are installed and healthy","Watch pod Events during deploys to catch hang causes early","Avoid thundering-herd pod starts (stagger large Rollouts)"],"tags":["kubernetes","pod","container-creating","transient"],"backgroundTag":"container-stuck-creating","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}