From 496be23058f5dfceccfc0402cf263579d83b8382 Mon Sep 17 00:00:00 2001 From: MichaelFisher1997 Date: Sun, 3 May 2026 18:10:58 +0000 Subject: [PATCH] fix: reinstall stale unregistered k3s nodes --- ansible/roles/k3s-agent/tasks/main.yml | 1 + ansible/roles/k3s-server/tasks/main.yml | 1 + ansible/site.yml | 24 ++++++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/ansible/roles/k3s-agent/tasks/main.yml b/ansible/roles/k3s-agent/tasks/main.yml index 21246e6..5ec2771 100644 --- a/ansible/roles/k3s-agent/tasks/main.yml +++ b/ansible/roles/k3s-agent/tasks/main.yml @@ -25,6 +25,7 @@ (not k3s_agent_service.stat.exists) or ((k3s_agent_service_state.stdout | default('')) != 'active') or (k3s_version != 'latest' and k3s_version not in (installed_k3s_version.stdout | default(''))) + or (not (k3s_node_registered | default(true) | bool)) }} - name: Configure k3s registry mirrors diff --git a/ansible/roles/k3s-server/tasks/main.yml b/ansible/roles/k3s-server/tasks/main.yml index fe837e0..9bfe604 100644 --- a/ansible/roles/k3s-server/tasks/main.yml +++ b/ansible/roles/k3s-server/tasks/main.yml @@ -25,6 +25,7 @@ (not k3s_service.stat.exists) or ((k3s_service_state.stdout | default('')) != 'active') or (k3s_version != 'latest' and k3s_version not in (installed_k3s_version.stdout | default(''))) + or (not (k3s_node_registered | default(true) | bool)) }} - name: Wait for API endpoint on 6443 (secondary only) diff --git a/ansible/site.yml b/ansible/site.yml index 10ff3aa..8249d1e 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -118,6 +118,18 @@ # Use Load Balancer for HA - all control planes join via LB endpoint k3s_join_endpoint: "{{ kube_api_endpoint | default(hostvars[groups['control_plane'][0]]['k3s_primary_private_ip']) }}" + pre_tasks: + - name: Check whether secondary control plane is registered in Kubernetes + command: kubectl get node/{{ inventory_hostname }} + delegate_to: "{{ groups['control_plane'][0] }}" + register: k3s_node_registration + changed_when: false + failed_when: false + + - name: Record secondary control plane registration state + set_fact: + k3s_node_registered: "{{ k3s_node_registration.rc == 0 }}" + roles: - k3s-server @@ -234,6 +246,18 @@ k3s_server_url: "https://{{ kube_api_endpoint | default(hostvars[groups['control_plane'][0]]['k3s_primary_private_ip']) }}:6443" k3s_node_ip: "{{ k3s_private_ip }}" + pre_tasks: + - name: Check whether worker is registered in Kubernetes + command: kubectl get node/{{ inventory_hostname }} + delegate_to: "{{ groups['control_plane'][0] }}" + register: k3s_node_registration + changed_when: false + failed_when: false + + - name: Record worker registration state + set_fact: + k3s_node_registered: "{{ k3s_node_registration.rc == 0 }}" + roles: - k3s-agent