{"record":{"id":"257206cf491fdd4b","repo":"cilium/cilium","slug":"failed-to-fetch-uname-r-w","errorCode":null,"errorMessage":"failed to fetch uname -r: %w","messagePattern":"failed to fetch uname -r: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cilium-cli/connectivity/check/features.go","lineNumber":220,"sourceCode":"\t\t\t\t\tEnabled: wg.NodeEncryption != \"Disabled\",\n\t\t\t\t\tMode:    wg.NodeEncryptOptOutLabels,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tresult[features.EncryptionPod] = features.Status{\n\t\tEnabled: mode != \"disabled\",\n\t\tMode:    mode,\n\t}\n\n\treturn nil\n}\n\nfunc (ct *ConnectivityTest) extractFeaturesFromUname(ctx context.Context, ciliumPod Pod, result features.Set) error {\n\tstdout, err := ciliumPod.K8sClient.ExecInPod(ctx, ciliumPod.Pod.Namespace, ciliumPod.Pod.Name,\n\t\tdefaults.AgentContainerName, []string{\"uname\", \"-r\"})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to fetch uname -r: %w\", err)\n\t}\n\n\tkernelVersion, err := version.ParseKernelVersion(stdout.String())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to parse kernel version: %w\", err)\n\t}\n\n\tresult[features.RHEL] = features.Status{\n\t\tEnabled: versioncheck.MustCompile(\"<=4.18.0\")(kernelVersion),\n\t}\n\n\treturn nil\n}\n\nfunc (ct *ConnectivityTest) extractFeaturesFromK8sCluster(ctx context.Context, result features.Set) {\n\tflavor := ct.client.AutodetectFlavor(ctx)\n\n\tresult[features.Flavor] = features.Status{","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/cilium/cilium/blob/ac7b90affa4baf0642e6685319d56907b3a73a6d/cilium-cli/connectivity/check/features.go#L202-L238","documentation":"Feature detection also execs `uname -r` in the cilium-agent pod to learn the kernel version (used e.g. for the RHEL <=4.18 feature). This error wraps any failure of that pod exec call.","triggerScenarios":"ciliumPod.K8sClient.ExecInPod(..., [\"uname\",\"-r\"]) returns an error: agent pod gone/not ready, container name mismatch, exec denied by RBAC/policy, or API server connectivity failure.","commonSituations":"Agent restarted mid-test; exec blocked by admission policies; kubeconfig/cluster mismatch; cilium pod in CrashLoopBackOff so exec target is unavailable.","solutions":["Confirm the agent pod is running: kubectl -n <ns> get pods -l k8s-app=cilium","Test exec manually: kubectl exec -n <ns> <pod> -c cilium-agent -- uname -r","Fix cluster connectivity/kubeconfig if the API call fails","Check RBAC and any policy engine blocking pod/exec","Retry the connectivity test after the agent stabilizes"],"exampleFix":"// before\nif err := ct.extractFeaturesFromUname(ctx, ciliumPod, result); err != nil { return err }\n// after: guard with readiness wait\nif err := ct.client.WaitforPods(ctx, ciliumPod.Pod.Namespace, []string{\"k8s-app=cilium\"}, true); err != nil {\n\treturn fmt.Errorf(\"cilium agent not ready: %w\", err)\n}\nif err := ct.extractFeaturesFromUname(ctx, ciliumPod, result); err != nil { return err }","handlingStrategy":"retry","validationCode":"// wait for agent readiness before exec'ing uname\nif err := client.WaitforPods(ctx, ciliumNamespace, []string{\"k8s-app=cilium\"}, true); err != nil {\n\treturn fmt.Errorf(\"cilium agents not ready: %w\", err)\n}","typeGuard":"func isExecFailure(err error) bool { return err != nil && strings.Contains(err.Error(), \"failed to fetch uname -r\") }","tryCatchPattern":"err := retry.Do(3, retry.WithTimeout(30*time.Second), func() error {\n\treturn ct.extractFeaturesFromUname(ctx, ciliumPod, result)\n})\nif err != nil { log.Warnf(\"kernel feature detection skipped: %v\", err) }","preventionTips":["Ensure agent pods are Ready before feature detection","Check exec permissions (pod/exec) for your ServiceAccount","Run `kubectl exec ... -- uname -r` as a smoke test","Avoid restarting cilium pods mid-test"],"tags":["cilium","kubernetes","pod-exec","kernel"],"backgroundTag":"kubectl-exec-failed","analyzedSha":"ac7b90affa4baf0642e6685319d56907b3a73a6d","analyzedAt":"2026-08-31T18:27:15.868Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}