summaryrefslogtreecommitdiff
path: root/common/kubernetes-cluster-cleanup.yml
diff options
context:
space:
mode:
Diffstat (limited to 'common/kubernetes-cluster-cleanup.yml')
-rw-r--r--common/kubernetes-cluster-cleanup.yml36
1 files changed, 36 insertions, 0 deletions
diff --git a/common/kubernetes-cluster-cleanup.yml b/common/kubernetes-cluster-cleanup.yml
new file mode 100644
index 00000000..83d6945c
--- /dev/null
+++ b/common/kubernetes-cluster-cleanup.yml
@@ -0,0 +1,36 @@
+---
+- name: check for nodes to be removed
+ hosts: _kubernetes_primary_master_
+ tasks:
+ - name: fetch list of current nodes
+ command: kubectl get nodes -o name
+ changed_when: False
+ check_mode: no
+ register: kubectl_node_list
+
+ - name: generate list of nodes to be removed
+ loop: "{{ kubectl_node_list.stdout_lines | map('replace', 'node/', '') | list | difference(groups['_kubernetes_nodes_']) }}"
+ add_host:
+ name: "{{ item }}"
+ inventory_dir: "{{ hostvars[item].inventory_dir }}"
+ group: _kubernetes_nodes_remove_
+ changed_when: False
+
+ - name: drain superflous nodes
+ loop: "{{ groups['_kubernetes_nodes_remove_'] | default([]) }}"
+ command: "kubectl drain {{ item }} --delete-local-data --force --ignore-daemonsets"
+
+
+- name: remove nodes from api server
+ hosts: _kubernetes_primary_master_
+ tasks:
+ - name: remove superflous nodes
+ loop: "{{ groups['_kubernetes_nodes_remove_'] | default([]) }}"
+ command: "kubectl delete node {{ item }}"
+
+- name: try to clean superflous nodes
+ hosts: _kubernetes_nodes_remove_
+ roles:
+ - role: kubernetes/kubeadm/reset
+ - role: kubernetes/net/kubeguard/reset
+ when: hostvars[groups['_kubernetes_primary_master_'][0]].kubernetes_network_plugin == 'kubeguard'