summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2022-08-15 22:42:01 +0200
committerChristian Pointner <equinox@spreadspace.org>2022-08-16 00:36:07 +0200
commit20947da3f0961ea36ea62cb54ff675c2a60bcffd (patch)
treece62a0d4ad13b14695116503a4451e1027c3a65c
parentkubernetes/kubeadm: move node-ip kubelet parameter to kubeadm config (diff)
kubernetes/kubeadm: make k8s node name configureable
-rw-r--r--common/kubernetes-cluster-cleanup.yml8
-rw-r--r--inventory/group_vars/k8s-emc/vars.yml2
-rw-r--r--inventory/group_vars/kubernetes-cluster/vars.yml2
-rw-r--r--inventory/hosts.ini4
-rw-r--r--roles/kubernetes/kubeadm/control-plane/tasks/main.yml14
-rw-r--r--roles/kubernetes/kubeadm/control-plane/tasks/primary.yml8
-rw-r--r--roles/kubernetes/kubeadm/control-plane/templates/kubeadm-init.config.j22
-rw-r--r--roles/kubernetes/kubeadm/control-plane/templates/kubeadm-join.config.j22
-rw-r--r--roles/kubernetes/kubeadm/prune/tasks/main.yml2
-rw-r--r--roles/kubernetes/kubeadm/worker/templates/kubeadm.config.j22
10 files changed, 28 insertions, 18 deletions
diff --git a/common/kubernetes-cluster-cleanup.yml b/common/kubernetes-cluster-cleanup.yml
index 87e59d31..67f6151b 100644
--- a/common/kubernetes-cluster-cleanup.yml
+++ b/common/kubernetes-cluster-cleanup.yml
@@ -9,7 +9,11 @@
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_']) }}"
+ 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 }}"
+
+ - 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') }}"
add_host:
name: "{{ item }}"
inventory_dir: "{{ hostvars[item].inventory_dir }}"
@@ -17,7 +21,7 @@
changed_when: False
- name: drain superflous nodes
- loop: "{{ groups['_kubernetes_nodes_prune_'] | default([]) }}"
+ loop: "{{ kubernetes_nodes_to_delete }}"
command: "kubectl drain {{ item }} --delete-local-data --force --ignore-daemonsets"
- name: prune superflous nodes from cluster
diff --git a/inventory/group_vars/k8s-emc/vars.yml b/inventory/group_vars/k8s-emc/vars.yml
index 2a41746b..aa46fb56 100644
--- a/inventory/group_vars/k8s-emc/vars.yml
+++ b/inventory/group_vars/k8s-emc/vars.yml
@@ -1,4 +1,6 @@
---
+kubernetes_node_name: "{{ inventory_hostname | replace('ele-', '') }}"
+
kubernetes_version: 1.24.3
kubernetes_cri_tools_pkg_version: 1.24.2-00
kubernetes_container_runtime: containerd
diff --git a/inventory/group_vars/kubernetes-cluster/vars.yml b/inventory/group_vars/kubernetes-cluster/vars.yml
index edec4e3e..3b91f793 100644
--- a/inventory/group_vars/kubernetes-cluster/vars.yml
+++ b/inventory/group_vars/kubernetes-cluster/vars.yml
@@ -1,4 +1,6 @@
---
+kubernetes_node_name: "{{ inventory_hostname }}"
+
kubernetes_network_plugin_replaces_kube_proxy: false
kubernetes_network_plugin_variant: default
diff --git a/inventory/hosts.ini b/inventory/hosts.ini
index 9f1ad97f..1b6fb279 100644
--- a/inventory/hosts.ini
+++ b/inventory/hosts.ini
@@ -262,7 +262,9 @@ ele-emc-r0 host_name=emc-r0
[elevate-mediachannel-edge]
ele-emc-e01 host_name=emc-e01
ele-emc-e02 host_name=emc-e02
-#ele-emc-e03 host_name=emc-e03
+
+#[elevate-mediachannel_todelete]
+#ele-emc-e03 host_name=emc-e03 kubernetes_node_name=emc-e03
###############################
diff --git a/roles/kubernetes/kubeadm/control-plane/tasks/main.yml b/roles/kubernetes/kubeadm/control-plane/tasks/main.yml
index fbfc4027..b6160dab 100644
--- a/roles/kubernetes/kubeadm/control-plane/tasks/main.yml
+++ b/roles/kubernetes/kubeadm/control-plane/tasks/main.yml
@@ -22,7 +22,7 @@
- name: check if control-plane node is tainted (1/2)
- command: "kubectl --kubeconfig /etc/kubernetes/admin.conf get node {{ inventory_hostname }} -o json"
+ command: "kubectl --kubeconfig /etc/kubernetes/admin.conf get node {{ kubernetes_node_name }} -o json"
check_mode: no
register: kubectl_get_node
changed_when: False
@@ -36,22 +36,22 @@
block:
- name: remove control-plane taint from node
when: "'node-role.kubernetes.io/control-plane' in kube_node_taints"
- command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ inventory_hostname }} node-role.kubernetes.io/control-plane-"
+ command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ kubernetes_node_name }} node-role.kubernetes.io/control-plane-"
- name: remove deprecated master taint from node
when: "'node-role.kubernetes.io/master' in kube_node_taints"
- command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ inventory_hostname }} node-role.kubernetes.io/master-"
+ command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ kubernetes_node_name }} node-role.kubernetes.io/master-"
- name: add taint from control-plane node
when: kubernetes.dedicated_controlplane_nodes
block:
- name: add control-plane taint to node
when: "'node-role.kubernetes.io/control-plane' not in kube_node_taints"
- command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ inventory_hostname }} node-role.kubernetes.io/control-plane='':NoSchedule"
+ command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ kubernetes_node_name }} node-role.kubernetes.io/control-plane='':NoSchedule"
- name: add deprecated master taint to node
when: "'node-role.kubernetes.io/master' not in kube_node_taints"
- command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ inventory_hostname }} node-role.kubernetes.io/master='':NoSchedule"
+ command: "kubectl --kubeconfig /etc/kubernetes/admin.conf taint nodes {{ kubernetes_node_name }} node-role.kubernetes.io/master='':NoSchedule"
- name: prepare kubectl (1/2)
file:
@@ -66,8 +66,8 @@
- name: add kubectl completion config for shells
loop:
- - zsh
- - bash
+ - zsh
+ - bash
blockinfile:
path: "/root/.{{ item }}rc"
create: yes
diff --git a/roles/kubernetes/kubeadm/control-plane/tasks/primary.yml b/roles/kubernetes/kubeadm/control-plane/tasks/primary.yml
index 4204c07d..cbad58d9 100644
--- a/roles/kubernetes/kubeadm/control-plane/tasks/primary.yml
+++ b/roles/kubernetes/kubeadm/control-plane/tasks/primary.yml
@@ -71,7 +71,7 @@
kubernetes_current_nodes: "{{ kubectl_node_list.stdout_lines | map('replace', 'node/', '') | list }}"
- name: create bootstrap token for existing cluster
- when: "groups['_kubernetes_nodes_'] | difference(kubernetes_current_nodes) | length > 0"
+ when: "groups['_kubernetes_nodes_'] | map('extract', hostvars, 'kubernetes_node_name') | difference(kubernetes_current_nodes) | length > 0"
command: kubeadm token create --ttl 42m
check_mode: no
register: kubeadm_token_create
@@ -93,12 +93,12 @@
changed_when: False
- name: set variables needed by kubernetes/nodes to join the cluster
+ loop: "{{ groups['_kubernetes_nodes_'] }}"
+ delegate_to: "{{ item }}"
+ delegate_facts: True
set_fact:
kube_bootstrap_token: "{% if kubeadm_token_generate.stdout is defined %}{{ kubeadm_token_generate.stdout }}{% elif kubeadm_token_create.stdout is defined %}{{ kubeadm_token_create.stdout }}{% endif %}"
kube_bootstrap_ca_cert_hash: "sha256:{{ kube_ca_openssl.stdout }}"
- delegate_to: "{{ item }}"
- delegate_facts: True
- loop: "{{ groups['_kubernetes_nodes_'] }}"
## install node-local-dns
diff --git a/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-init.config.j2 b/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-init.config.j2
index b6743282..23cd36e6 100644
--- a/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-init.config.j2
+++ b/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-init.config.j2
@@ -16,7 +16,7 @@ skipPhases:
- addon/kube-proxy
{% endif %}
nodeRegistration:
- name: "{{ inventory_hostname }}"
+ name: "{{ kubernetes_node_name }}"
criSocket: "{{ kubernetes_cri_socket }}"
{% if kubernetes_overlay_node_ip is defined %}
kubeletExtraArgs:
diff --git a/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-join.config.j2 b/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-join.config.j2
index 77ad480b..77da9021 100644
--- a/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-join.config.j2
+++ b/roles/kubernetes/kubeadm/control-plane/templates/kubeadm-join.config.j2
@@ -16,7 +16,7 @@ controlPlane:
advertiseAddress: "{{ kubernetes_overlay_node_ip }}"
{% endif %}
nodeRegistration:
- name: "{{ inventory_hostname }}"
+ name: "{{ kubernetes_node_name }}"
criSocket: "{{ kubernetes_cri_socket }}"
{% if kubernetes_overlay_node_ip is defined %}
kubeletExtraArgs:
diff --git a/roles/kubernetes/kubeadm/prune/tasks/main.yml b/roles/kubernetes/kubeadm/prune/tasks/main.yml
index 45020963..1c746294 100644
--- a/roles/kubernetes/kubeadm/prune/tasks/main.yml
+++ b/roles/kubernetes/kubeadm/prune/tasks/main.yml
@@ -3,7 +3,7 @@
run_once: true
delegate_to: "{{ groups['_kubernetes_primary_controlplane_node_'] | first }}"
loop: "{{ groups['_kubernetes_nodes_prune_'] | default([]) }}"
- command: "kubectl delete node {{ item }}"
+ command: "kubectl delete node {{ hostvars[item].kubernetes_node_name }}"
- name: prune network plugin
include_tasks: "net_{{ kubernetes_network_plugin }}.yml"
diff --git a/roles/kubernetes/kubeadm/worker/templates/kubeadm.config.j2 b/roles/kubernetes/kubeadm/worker/templates/kubeadm.config.j2
index 451498cd..70314fde 100644
--- a/roles/kubernetes/kubeadm/worker/templates/kubeadm.config.j2
+++ b/roles/kubernetes/kubeadm/worker/templates/kubeadm.config.j2
@@ -9,7 +9,7 @@ discovery:
caCertHashes:
- "{{ kube_bootstrap_ca_cert_hash }}"
nodeRegistration:
- name: "{{ inventory_hostname }}"
+ name: "{{ kubernetes_node_name }}"
criSocket: "{{ kubernetes_cri_socket }}"
{% if kubernetes_overlay_node_ip is defined %}
kubeletExtraArgs: