{"record":{"id":"0015d65da72b98c6","repo":"kubernetes/kubernetes","slug":"failed-to-create-kubelet-w","errorCode":null,"errorMessage":"failed to create kubelet: %w","messagePattern":"failed to create kubelet: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"cmd/kubelet/app/server.go","lineNumber":1321,"sourceCode":"\tcapabilities.Initialize(capabilities.Capabilities{\n\t\tAllowPrivileged: true,\n\t})\n\n\tcredentialprovider.SetPreferredDockercfgPath(kubeServer.RootDirectory)\n\tlogger.V(2).Info(\"Using root directory\", \"path\", kubeServer.RootDirectory)\n\n\tif kubeDeps.OSInterface == nil {\n\t\tkubeDeps.OSInterface = kubecontainer.RealOS{}\n\t}\n\n\tk, err := createAndInitKubelet(ctx,\n\t\tkubeServer,\n\t\tkubeDeps,\n\t\thostname,\n\t\tnodeName,\n\t\tnodeIPs)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create kubelet: %w\", err)\n\t}\n\n\t// NewMainKubelet should have set up a pod source config if one didn't exist\n\t// when the builder was run. This is just a precaution.\n\tif kubeDeps.PodConfig == nil {\n\t\treturn fmt.Errorf(\"failed to create kubelet, pod source config was nil\")\n\t}\n\tpodCfg := kubeDeps.PodConfig\n\n\tif err := rlimit.SetNumFiles(uint64(kubeServer.MaxOpenFiles)); err != nil {\n\t\tlogger.Error(err, \"Failed to set rlimit on max file handles\")\n\t}\n\n\tstartKubelet(ctx, k, podCfg, &kubeServer.KubeletConfiguration, kubeDeps, kubeServer.EnableServer)\n\tlogger.Info(\"Started kubelet\")\n\n\treturn nil\n}","sourceCodeStart":1303,"sourceCodeEnd":1339,"githubUrl":"https://github.com/kubernetes/kubernetes/blob/b882c60b4023bdf09264c2d5d30a2cadebc240fb/cmd/kubelet/app/server.go#L1303-L1339","documentation":"A catch-all wrapper around createAndInitKubelet → kubelet.NewMainKubelet failing (server.go:1321). NewMainKubelet performs dozens of validations (container runtime, volume plugins, auth, image GC, eviction, etc.), so the wrapped %w is the real diagnostic.","triggerScenarios":"Triggered whenever NewMainKubelet returns a non-nil error: unsupported container runtime endpoint, missing volume plugin, invalid eviction config, bad image GC settings, CAdvisor/cgroup init failure, or any of the many subsystem constructors erroring.","commonSituations":"Misconfigured container runtime (wrong --container-runtime-endpoint, CRI socket not running), invalid evictionHard thresholds, imageMinimumGCAge/cgroup incompatibility, missing kernel modules for the runtime, or a dependency injection bug in a custom kubelet build.","solutions":["Read the wrapped error first — it identifies the failing subsystem (e.g. 'container runtime not found', 'failed to initialize eviction manager').","Verify the CRI socket: crictl --runtime-endpoint <endpoint> info.","Check KubeletConfiguration fields (evictionHard, imageGCHighThresholdPercent, etc.) for valid ranges.","Ensure kernel modules (overlay, br_netfilter) and cgroups are available.","Run kubelet with higher verbosity (--v=4) to trace which constructor failed."],"exampleFix":"# before\n--container-runtime-endpoint=unix:///run/containerd/containerd.sock\n# containerd not running -> NewMainKubelet fails\n# after: start runtime first, then kubelet\nsystemctl start containerd && systemctl start kubelet","handlingStrategy":"try-catch","validationCode":"// Hard to pre-validate fully; rely on kubelet --version dry checks.\n// At least confirm the CRI endpoint answers:\nfunc probeCRI(endpoint string) error {\n    // run: crictl --runtime-endpoint <endpoint> info\n    return runCrictl(\"info\", endpoint)\n}","typeGuard":null,"tryCatchPattern":"k, err := createAndInitKubelet(ctx, kubeServer, kubeDeps, hostname, nodeName, nodeIPs)\nif err != nil {\n    return fmt.Errorf(\"failed to create kubelet: %w\", err) // always inspect wrapped cause\n}","preventionTips":["Start the container runtime before kubelet (systemd After=containerd).","Validate KubeletConfiguration with kubeadm config validate / kubelet --config --version.","Keep runtime and kubelet versions within skew policy."],"tags":["kubelet","startup","container-runtime","initialization","config"],"analyzedSha":"b882c60b4023bdf09264c2d5d30a2cadebc240fb","analyzedAt":"2026-08-07T04:07:48.144Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}