From c6dfe22a41cb7e033a719397f85f2e32c02d80c2 Mon Sep 17 00:00:00 2001 From: Takuya Murakami Date: Fri, 16 May 2025 19:01:13 +0900 Subject: [PATCH] Improve logging of kubeadm init failure of first control plane node (#12216) Split retry task of 'kubeadm init' to show the failure log of the first execution. --- .../control-plane/tasks/kubeadm-setup.yml | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml index c33f94b30..823e61ca1 100644 --- a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml +++ b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml @@ -171,22 +171,32 @@ - not kube_external_ca_mode - name: Kubeadm | Initialize first control plane node - command: >- - timeout -k {{ kubeadm_init_timeout }} {{ kubeadm_init_timeout }} - {{ bin_dir }}/kubeadm init - --config={{ kube_config_dir }}/kubeadm-config.yaml - --ignore-preflight-errors={{ kubeadm_ignore_preflight_errors | join(',') }} - --skip-phases={{ kubeadm_init_phases_skip | join(',') }} - {{ kube_external_ca_mode | ternary('', '--upload-certs') }} - register: kubeadm_init - # Retry is because upload config sometimes fails - retries: 3 - until: kubeadm_init is succeeded or "field is immutable" in kubeadm_init.stderr when: inventory_hostname == first_kube_control_plane and not kubeadm_already_run.stat.exists - failed_when: kubeadm_init.rc != 0 and "field is immutable" not in kubeadm_init.stderr + vars: + kubeadm_init_first_control_plane_cmd: >- + timeout -k {{ kubeadm_init_timeout }} {{ kubeadm_init_timeout }} + {{ bin_dir }}/kubeadm init + --config={{ kube_config_dir }}/kubeadm-config.yaml + --ignore-preflight-errors={{ kubeadm_ignore_preflight_errors | join(',') }} + --skip-phases={{ kubeadm_init_phases_skip | join(',') }} + {{ kube_external_ca_mode | ternary('', '--upload-certs') }} environment: PATH: "{{ bin_dir }}:{{ ansible_env.PATH }}" notify: Control plane | restart kubelet + block: + - name: Kubeadm | Initialize first control plane node (1st try) + command: "{{ kubeadm_init_first_control_plane_cmd }}" + register: kubeadm_init + failed_when: kubeadm_init.rc != 0 and "field is immutable" not in kubeadm_init.stderr + rescue: + # Retry is because upload config sometimes fails + # This retry task is separated from 1st task to show log of failure of 1st task. + - name: Kubeadm | Initialize first control plane node (retry) + command: "{{ kubeadm_init_first_control_plane_cmd }}" + register: kubeadm_init + retries: 2 + until: kubeadm_init is succeeded or "field is immutable" in kubeadm_init.stderr + failed_when: kubeadm_init.rc != 0 and "field is immutable" not in kubeadm_init.stderr - name: Set kubeadm certificate key set_fact: