From 39b97464becd5a1dcbc376e9f8913d239d5e7108 Mon Sep 17 00:00:00 2001 From: NoNE Date: Tue, 17 Mar 2026 10:01:36 +0100 Subject: [PATCH] Use async/poll on drain tasks to prevent SSH connection timeouts (#13081) --- roles/remove_node/pre_remove/tasks/main.yml | 2 ++ roles/upgrade/pre-upgrade/tasks/main.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/roles/remove_node/pre_remove/tasks/main.yml b/roles/remove_node/pre_remove/tasks/main.yml index de4adcb29..a29a0f7ee 100644 --- a/roles/remove_node/pre_remove/tasks/main.yml +++ b/roles/remove_node/pre_remove/tasks/main.yml @@ -17,6 +17,8 @@ --grace-period {{ drain_grace_period }} --timeout {{ drain_timeout }} --delete-emptydir-data {{ kube_override_hostname }} + async: "{{ (drain_timeout | regex_replace('s$', '') | int) + 120 }}" + poll: 15 when: - groups['kube_control_plane'] | length > 0 # ignore servers that are not nodes diff --git a/roles/upgrade/pre-upgrade/tasks/main.yml b/roles/upgrade/pre-upgrade/tasks/main.yml index a415dae27..27e1309b9 100644 --- a/roles/upgrade/pre-upgrade/tasks/main.yml +++ b/roles/upgrade/pre-upgrade/tasks/main.yml @@ -59,6 +59,8 @@ --timeout {{ drain_timeout }} --delete-emptydir-data {{ kube_override_hostname | default(inventory_hostname) }} {% if drain_pod_selector %}--pod-selector '{{ drain_pod_selector }}'{% endif %} + async: "{{ (drain_timeout | regex_replace('s$', '') | int) + 120 }}" + poll: 15 when: drain_nodes register: result failed_when: @@ -82,6 +84,8 @@ --delete-emptydir-data {{ kube_override_hostname | default(inventory_hostname) }} {% if drain_pod_selector %}--pod-selector '{{ drain_pod_selector }}'{% endif %} --disable-eviction + async: "{{ (drain_fallback_timeout | regex_replace('s$', '') | int) + 120 }}" + poll: 15 register: drain_fallback_result until: drain_fallback_result.rc == 0 retries: "{{ drain_fallback_retries }}"