summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2022-08-16 23:37:21 +0200
committerChristian Pointner <equinox@spreadspace.org>2022-08-16 23:37:27 +0200
commitb2a99f806fba7f7c8083670308721b291d7c34e9 (patch)
treedb6b071948a679fa4f6926cb5c421c2bc8c4cb43 /common
parentkubernetes/kubeadm: make k8s node name configureable (diff)
kubernetes/kubeadm: fix node pruning by adding a node label for ansible inventroy hostname
Diffstat (limited to 'common')
-rw-r--r--common/kubernetes-cluster-cleanup.yml21
1 files changed, 8 insertions, 13 deletions
diff --git a/common/kubernetes-cluster-cleanup.yml b/common/kubernetes-cluster-cleanup.yml
index 67f6151b..69a9fc7e 100644
--- a/common/kubernetes-cluster-cleanup.yml
+++ b/common/kubernetes-cluster-cleanup.yml
@@ -3,27 +3,22 @@
hosts: _kubernetes_primary_controlplane_node_
tasks:
- name: fetch list of current nodes
- command: kubectl get nodes -o name
+ command: kubectl --kubeconfig /etc/kubernetes/admin.conf get nodes -o jsonpath='{range .items[*]}{.metadata.name}{":"}{.metadata.labels.ansible\.spreadsapce\.org/inventory_hostname}{"\n"}{end}'
changed_when: False
check_mode: no
- register: kubectl_node_list
-
- - name: generate list of nodes to be removed
- set_fact:
- kubernetes_nodes_to_delete: "{{ kubectl_node_list.stdout_lines | map('replace', 'node/', '') | list | difference(groups['_kubernetes_nodes_'] | map('extract', hostvars, 'kubernetes_node_name')) | list }}"
+ register: kubectl_node_list_yaml
- name: generate group of nodes to be removed
- loop: "{{ hostvars | dict2items | selectattr('value.kubernetes_node_name', 'defined') | selectattr('value.kubernetes_node_name', 'in', kubernetes_nodes_to_delete) | map(attribute='key') }}"
+ loop: "{{ kubectl_node_list_yaml.stdout_lines | map('split', ':', 1) | rejectattr('1', 'in', groups['_kubernetes_nodes_']) }}"
+ loop_control:
+ label: "{{ item[1] }} ({{ item[0] }})"
add_host:
- name: "{{ item }}"
- inventory_dir: "{{ hostvars[item].inventory_dir }}"
+ name: "{{ item[1] }}"
+ inventory_dir: "{{ hostvars[item[1]].inventory_dir }}"
group: _kubernetes_nodes_prune_
+ kubernetes_node_name: "{{ item[0] }}"
changed_when: False
- - name: drain superflous nodes
- loop: "{{ kubernetes_nodes_to_delete }}"
- command: "kubectl drain {{ item }} --delete-local-data --force --ignore-daemonsets"
-
- name: prune superflous nodes from cluster
hosts: _kubernetes_nodes_
roles: