Merge pull request #85843 from Itxaka/kubeadm_docker_messages

Enhance error message for failed controlplane init
This commit is contained in:
Kubernetes Prow Robot 2019-12-04 04:08:57 -08:00 committed by GitHub
commit c8b123e8e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -47,11 +47,18 @@ var (
- 'journalctl -xeu kubelet' - 'journalctl -xeu kubelet'
Additionally, a control plane component may have crashed or exited when started by the container runtime. Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker. To troubleshoot, list all containers using your preferred container runtimes CLI.
{{ if .IsDocker }}
Here is one example how you may list all Kubernetes containers running in docker: Here is one example how you may list all Kubernetes containers running in docker:
- 'docker ps -a | grep kube | grep -v pause' - 'docker ps -a | grep kube | grep -v pause'
Once you have found the failing container, you can inspect its logs with: Once you have found the failing container, you can inspect its logs with:
- 'docker logs CONTAINERID' - 'docker logs CONTAINERID'
{{ else }}
Here is one example how you may list all Kubernetes containers running in cri-o/containerd using crictl:
- 'crictl --runtime-endpoint {{ .Socket }} ps -a | grep kube | grep -v pause'
Once you have found the failing container, you can inspect its logs with:
- 'crictl --runtime-endpoint {{ .Socket }} logs CONTAINERID'
{{ end }}
`))) `)))
) )
@ -93,10 +100,17 @@ func runWaitControlPlanePhase(c workflow.RunData) error {
fmt.Printf("[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory %q. This can take up to %v\n", data.ManifestDir(), timeout) fmt.Printf("[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory %q. This can take up to %v\n", data.ManifestDir(), timeout)
if err := waiter.WaitForKubeletAndFunc(waiter.WaitForAPI); err != nil { if err := waiter.WaitForKubeletAndFunc(waiter.WaitForAPI); err != nil {
ctx := map[string]string{ context := struct {
"Error": fmt.Sprintf("%v", err), Error string
Socket string
IsDocker bool
}{
Error: fmt.Sprintf("%v", err),
Socket: data.Cfg().NodeRegistration.CRISocket,
IsDocker: data.Cfg().NodeRegistration.CRISocket == kubeadmconstants.DefaultDockerCRISocket,
} }
kubeletFailTempl.Execute(data.OutputWriter(), ctx)
kubeletFailTempl.Execute(data.OutputWriter(), context)
return errors.New("couldn't initialize a Kubernetes cluster") return errors.New("couldn't initialize a Kubernetes cluster")
} }