kubernetes/kubernetes · warning
%s not found in system path
Error message
%s not found in system path
What it means
Produced by InPathCheck.Check when exec.LookPath(ipc.executable) fails. Line 431 is the non-mandatory branch, so it is returned as a WARNING (the mandatory branch at line 424 returns it as a hard error). It tells the operator a checked binary is not on PATH, optionally with a suggestion.
Source
Thrown at cmd/kubeadm/app/preflight/checks.go:431
}
return fmt.Sprintf("FileExisting-%s", strings.Replace(ipc.executable, "/", "-", -1))
}
// Check validates if the given executable is present in the path.
func (ipc InPathCheck) Check() (warnings, errs []error) {
klog.V(1).Infof("validating the presence of executable %s", ipc.executable)
_, err := ipc.exec.LookPath(ipc.executable)
if err != nil {
if ipc.mandatory {
// Return as an error:
return nil, []error{errors.Errorf("%s not found in system path", ipc.executable)}
}
// Return as a warning:
warningMessage := fmt.Sprintf("%s not found in system path", ipc.executable)
if ipc.suggestion != "" {
warningMessage += fmt.Sprintf("\nSuggestion: %s", ipc.suggestion)
}
return []error{errors.New(warningMessage)}, nil
}
return nil, nil
}
// HostnameCheck checks if hostname match dns subdomain regex.
// If hostname doesn't match this regex, kubelet will not launch static pods like kube-apiserver/kube-controller-manager and so on.
type HostnameCheck struct {
nodeName string
}
// Name will return Hostname as name for HostnameCheck
func (HostnameCheck) Name() string {
return "Hostname"
}
// Check validates if hostname match dns subdomain regex.
// Check hostname length and format
func (hc HostnameCheck) Check() (warnings, errorList []error) {View on GitHub (pinned to b882c60b40)
Solutions
- Install the missing tool (e.g. apt-get install -y conntrack / iptables / socat as named in the warning).
- Ensure the tool's directory is on PATH for the user/systemd context running kubeadm.
- If the warning is for a non-essential binary, you can ignore it or suppress with --ignore-preflight-errors=<check>.
- If mandatory and unmet, install the required binary since preflight will fail otherwise.
Example fix
# before: warning "conntrack not found in system path" sudo apt-get install -y conntrack # after: preflight passes (or warning disappears)
Defensive patterns
Strategy: validation
Validate before calling
if _, err := exec.LookPath("conntrack"); err != nil {
return fmt.Errorf("required binary %q missing from PATH", "conntrack")
} Prevention
- Pre-install required tools (conntrack, socat, iptables, ebtables; xcopy on Windows) on node images.
- Validate PATH in the systemd/sudo context that runs kubeadm.
- Use --ignore-preflight-errors only for genuinely optional binaries.
When it happens
Trigger: A preflight InPathCheck (e.g. for conntrack, ip, iptables, ebtables, socat, or xcopy on Windows) where the executable is not found in PATH during 'kubeadm init'/'join' preflight.
Common situations: Minimal/container base images missing expected tools (e.g. conntrack not installed). PATH not set in a systemd unit or sudo environment. Windows node missing xcopy. A check configured as optional triggering because an optional helper binary is absent.
Related errors
- You must update your container runtime to a version that sup
- swap is supported for cgroup v2 only. The kubelet must be pr
- preflight checks failed
- user is not running as root
- the kubeadm process must be run by a user with elevated priv
AI-assisted analysis of kubernetes/kubernetes@b882c60b40 (2026-08-07).
Data as JSON: /api/errors/b3ebe411e5d51c90.
Report an issue: GitHub.