forked from tim/k3s-ansible
fix(k3s-server): stabilize single-server bootstrap
- delegate cgroups for transient K3s server units\n- verify inventory node registration without legacy role labels\n- wait for bootstrap CRDs before replacing the transient service
This commit is contained in:
committed by
Techno Tim
parent
10bde4eff0
commit
4c50fbbe10
@@ -12,7 +12,10 @@
|
||||
- name: Join transient k3s-init service for {{ joining_master }}
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
systemd-run -p RestartSec=2 -p Restart=on-failure --unit=k3s-init
|
||||
systemd-run -p RestartSec=2 -p Restart=on-failure
|
||||
-p Delegate=yes -p TasksMax=infinity -p KillMode=process
|
||||
-p LimitNOFILE=1048576 -p LimitNPROC=infinity -p LimitCORE=infinity
|
||||
--unit=k3s-init
|
||||
k3s server {{ hostvars[joining_master].k3s_server_init_args }}
|
||||
creates: "{{ systemd_dir }}/k3s-init.service"
|
||||
delegate_to: "{{ joining_master }}"
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
systemd-run -p RestartSec=2 -p Restart=on-failure
|
||||
-p Delegate=yes -p TasksMax=infinity -p KillMode=process
|
||||
-p LimitNOFILE=1048576 -p LimitNPROC=infinity -p LimitCORE=infinity
|
||||
--unit=k3s-init k3s server {{ server_init_args }}
|
||||
creates: "{{ systemd_dir }}/k3s-init.service"
|
||||
no_log: true
|
||||
@@ -80,13 +82,38 @@
|
||||
loop_var: joining_master
|
||||
when: groups[group_name_master | default('master')] | length > 1
|
||||
|
||||
- name: Verify that all nodes actually joined (check k3s-init.service if this fails)
|
||||
- name: Verify that all expected control-plane nodes registered
|
||||
ansible.builtin.command:
|
||||
cmd: "{{ k3s_kubectl_binary | default('k3s kubectl') }} get nodes -l 'node-role.kubernetes.io/master=true' -o=jsonpath='{.items[*].metadata.name}'" # yamllint disable-line rule:line-length
|
||||
cmd: >-
|
||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} get nodes
|
||||
-o=jsonpath='{.items[*].metadata.name}'
|
||||
register: nodes
|
||||
until: nodes.rc == 0 and (nodes.stdout.split() | length) == (groups[group_name_master | default('master')] | length) # yamllint disable-line rule:line-length
|
||||
until:
|
||||
- nodes.rc == 0
|
||||
- expected_control_plane_names | difference(nodes.stdout.split()) | length == 0
|
||||
retries: "{{ retry_count | default(20) }}"
|
||||
delay: 10
|
||||
delay: 2
|
||||
changed_when: false
|
||||
vars:
|
||||
expected_control_plane_names: >-
|
||||
{{
|
||||
groups[group_name_master | default('master')]
|
||||
| map('extract', hostvars, 'ansible_hostname')
|
||||
| list
|
||||
}}
|
||||
|
||||
- name: Wait for K3s bootstrap CRDs to become established
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
{{ k3s_kubectl_binary | default('k3s kubectl') }} wait
|
||||
--for=condition=Established --timeout=5s
|
||||
crd/addons.k3s.cattle.io
|
||||
crd/helmcharts.helm.cattle.io
|
||||
crd/helmchartconfigs.helm.cattle.io
|
||||
register: bootstrap_crds
|
||||
until: bootstrap_crds.rc == 0
|
||||
retries: "{{ retry_count | default(20) }}"
|
||||
delay: 2
|
||||
changed_when: false
|
||||
always:
|
||||
- name: Save logs of k3s-init.service
|
||||
|
||||
Reference in New Issue
Block a user