Browse Source
Refactor remove node to allow removing dead nodes and etcd members (#5009)
Refactor remove node to allow removing dead nodes and etcd members (#5009)
Change-Id: I1c59249f08f16d0f6fd60df6ab61f17a0a7df189pull/5051/head
committed by
Kubernetes Prow Robot
3 changed files with 71 additions and 18 deletions
Unified View
Diff Options
@ -1,9 +1,54 @@ |
|||||
--- |
--- |
||||
|
- name: Lookup node IP in kubernetes |
||||
|
shell: >- |
||||
|
{{ bin_dir }}/kubectl get nodes {{ node }} |
||||
|
-o jsonpath='{range.status.addresses[?(@.type=="InternalIP")]}{.address}{"\n"}{end}' |
||||
|
register: remove_node_ip |
||||
|
when: |
||||
|
- inventory_hostname in groups['etcd'] |
||||
|
- ip is not defined |
||||
|
- access_ip is not defined |
||||
|
delegate_to: "{{ groups['etcd']|first }}" |
||||
|
failed_when: false |
||||
|
|
||||
|
- name: Set node IP |
||||
|
set_fact: |
||||
|
node_ip: "{{ ip | default(access_ip | default(remove_node_ip.stdout)) | trim }}" |
||||
|
|
||||
- name: Delete node |
- name: Delete node |
||||
command: "{{ bin_dir }}/kubectl delete node {{ item }}" |
|
||||
with_items: |
|
||||
- "{{ node.split(',') | default(groups['kube-node']) }}" |
|
||||
|
command: "{{ bin_dir }}/kubectl delete node {{ inventory_hostname }}" |
||||
delegate_to: "{{ groups['kube-master']|first }}" |
delegate_to: "{{ groups['kube-master']|first }}" |
||||
run_once: true |
run_once: true |
||||
ignore_errors: yes |
ignore_errors: yes |
||||
|
|
||||
|
- name: Lookup etcd member id |
||||
|
shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_access_addresses }} member list | grep {{ node_ip }} | cut -d: -f1" |
||||
|
register: etcd_member_id |
||||
|
ignore_errors: true |
||||
|
changed_when: false |
||||
|
check_mode: no |
||||
|
tags: |
||||
|
- facts |
||||
|
environment: |
||||
|
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ groups['etcd']|first }}.pem" |
||||
|
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ groups['etcd']|first }}-key.pem" |
||||
|
ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem" |
||||
|
delegate_to: "{{ groups['etcd']|first }}" |
||||
|
when: inventory_hostname in groups['etcd'] |
||||
|
|
||||
|
- name: Remove etcd member from cluster |
||||
|
shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_access_addresses }} member remove {{ etcd_member_id.stdout }}" |
||||
|
register: etcd_member_in_cluster |
||||
|
ignore_errors: true |
||||
|
changed_when: false |
||||
|
check_mode: no |
||||
|
tags: |
||||
|
- facts |
||||
|
environment: |
||||
|
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ groups['etcd']|first }}.pem" |
||||
|
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ groups['etcd']|first }}-key.pem" |
||||
|
ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem" |
||||
|
delegate_to: "{{ groups['etcd']|first }}" |
||||
|
when: |
||||
|
- inventory_hostname in groups['etcd'] |
||||
|
- not etcd_member_id.stdout |
Write
Preview
Loading…
Cancel
Save