kubespray/roles/upgrade/pre-upgrade/tasks/main.yml

69 lines
2.0 KiB
YAML
Raw Normal View History

2016-12-10 02:44:52 +08:00
---
2018-02-09 23:39:21 +08:00
# Node Ready: type = ready, status = True
# Node NotReady: type = ready, status = Unknown
2017-03-22 21:19:27 +08:00
- name: See if node is in ready state
2018-02-09 23:39:21 +08:00
shell: >-
{{ bin_dir }}/kubectl get node {{ inventory_hostname }}
-o jsonpath='{ range .status.conditions[?(@.type == "Ready")].status }{ @ }{ end }'
register: kubectl_node_ready
delegate_to: "{{ groups['kube-master'][0] }}"
failed_when: false
changed_when: false
2018-02-09 23:39:21 +08:00
# SchedulingDisabled: unschedulable = true
# else unschedulable key doesn't exist
- name: See if node is schedulable
shell: >-
{{ bin_dir }}/kubectl get node {{ inventory_hostname }}
-o jsonpath='{ .spec.unschedulable }'
register: kubectl_node_schedulable
delegate_to: "{{ groups['kube-master'][0] }}"
failed_when: false
changed_when: false
2017-03-22 21:19:27 +08:00
- set_fact:
needs_cordoning: >-
2018-02-09 23:39:21 +08:00
{% if kubectl_node_ready.stdout == "True" and kubectl_node_schedulable.stdout == "" -%}
2017-03-22 21:19:27 +08:00
true
{%- else -%}
2017-03-22 21:19:27 +08:00
false
{%- endif %}
2016-12-10 02:44:52 +08:00
- name: Cordon node
command: "{{ bin_dir }}/kubectl cordon {{ inventory_hostname }}"
2016-12-10 02:44:52 +08:00
delegate_to: "{{ groups['kube-master'][0] }}"
2017-03-22 21:19:27 +08:00
when: needs_cordoning
2016-12-10 02:44:52 +08:00
- name: Check kubectl version
2018-10-24 03:51:17 +08:00
command: "{{ bin_dir }}/kubectl version --client --short"
register: kubectl_version
delegate_to: "{{ groups['kube-master'][0] }}"
run_once: yes
changed_when: false
when:
- drain_nodes
- needs_cordoning
- 'drain_pod_selector != ""'
- name: Ensure minimum version for drain label selector if necessary
assert:
that: "kubectl_version.stdout.split(' ')[-1] is version('v1.10.0', '>=')"
when:
- drain_nodes
- needs_cordoning
- 'drain_pod_selector != ""'
2016-12-10 02:44:52 +08:00
- name: Drain node
command: >-
{{ bin_dir }}/kubectl drain
--force
--ignore-daemonsets
--grace-period {{ drain_grace_period }}
--timeout {{ drain_timeout }}
--delete-local-data {{ inventory_hostname }}
{% if drain_pod_selector != "" %}--pod-selector '{{ drain_pod_selector }}'{% endif %}
2016-12-10 02:44:52 +08:00
delegate_to: "{{ groups['kube-master'][0] }}"
when:
- drain_nodes
- needs_cordoning