From 44d851d5bbb8201547b0a8e3bde3123bd7f2aab4 Mon Sep 17 00:00:00 2001 From: Matthew Mosesohn <mmosesohn@mirantis.com> Date: Wed, 22 Mar 2017 16:19:27 +0300 Subject: [PATCH] Only cordon Ready nodes --- roles/kubernetes/master/tasks/pre-upgrade.yml | 2 ++ roles/upgrade/post-upgrade/tasks/main.yml | 1 + roles/upgrade/pre-upgrade/tasks/main.yml | 17 ++++++++++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/roles/kubernetes/master/tasks/pre-upgrade.yml b/roles/kubernetes/master/tasks/pre-upgrade.yml index 244c8b13e..adafe80ae 100644 --- a/roles/kubernetes/master/tasks/pre-upgrade.yml +++ b/roles/kubernetes/master/tasks/pre-upgrade.yml @@ -93,3 +93,5 @@ delegate_to: "{{item}}" with_items: "{{groups['etcd']}}" when: needs_etcd_migration|bool + notify: "Master | reload kubelet" + diff --git a/roles/upgrade/post-upgrade/tasks/main.yml b/roles/upgrade/post-upgrade/tasks/main.yml index d8243d04d..bff9983ff 100644 --- a/roles/upgrade/post-upgrade/tasks/main.yml +++ b/roles/upgrade/post-upgrade/tasks/main.yml @@ -3,3 +3,4 @@ - name: Uncordon node command: "{{ bin_dir }}/kubectl uncordon {{ ansible_hostname }}" delegate_to: "{{ groups['kube-master'][0] }}" + when: needs_cordoning|default(false) diff --git a/roles/upgrade/pre-upgrade/tasks/main.yml b/roles/upgrade/pre-upgrade/tasks/main.yml index 9b47c845b..e0e5ded81 100644 --- a/roles/upgrade/pre-upgrade/tasks/main.yml +++ b/roles/upgrade/pre-upgrade/tasks/main.yml @@ -1,8 +1,21 @@ --- +- name: See if node is in ready state + command: "kubectl get nodes | grep {{ inventory_hostname }}" + register: kubectl_nodes + ignore_errors: true + +- set_fact: + needs_cordoning: >- + {% if " Ready" in kubectl_nodes.stdout %} + true + {% else %} + false + {% endif %} - name: Cordon node command: "{{ bin_dir }}/kubectl cordon {{ ansible_hostname }}" delegate_to: "{{ groups['kube-master'][0] }}" + when: needs_cordoning - name: Drain node command: >- @@ -13,6 +26,4 @@ --timeout {{ drain_timeout }} --delete-local-data {{ ansible_hostname }} delegate_to: "{{ groups['kube-master'][0] }}" - -- name: Sleep for grace period for draining - pause: seconds=30 + when: needs_cordoning -- GitLab