kubekey/builtin/core/playbooks/delete_nodes.yaml
liujian 3885b443ac
fix: change builtin/core architectures (#2718)
Signed-off-by: redscholar <blacktiledhouse@gmail.com>
2025-08-22 21:59:40 +08:00

81 lines
2.8 KiB
YAML

---
# Load default variables and perform prechecks on all hosts
- hosts:
- all
gather_facts: true
roles:
- defaults
- precheck
- hosts:
- kube_control_plane
gather_facts: true
tasks:
- name: DeleteNode | Ensure at least one control plane node remains in the cluster
run_once: true
command: |
{{- $cpNodes := list -}}
{{- range .groups.kube_control_plane -}}
{{- if index $.hostvars . "kubernetes_install_LoadState" "stdout" | eq "loaded" -}}
{{- $cpNodes = append $cpNodes . -}}
{{- end -}}
{{- end -}}
{{- if (subtractList $cpNodes .delete_nodes) | empty }}
echo "At least one control plane node must be retained in the cluster." >&2
exit 1
{{- end }}
- hosts:
- k8s_cluster
pre_tasks:
- name: DeleteNode | Remove node from Kubernetes cluster
when: .delete_nodes | default list | has .inventory_hostname
command: |
if kubectl get node {{ .hostname }} > /dev/null 2>&1; then
kubectl cordon {{ .hostname }}
if [ $(kubectl get nodes --no-headers | wc -l) -gt 1 ]; then
kubectl drain {{ .hostname }} --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
else
kubectl drain {{ .hostname }} --ignore-daemonsets --delete-emptydir-data --force
fi
{{- if .cni.type | eq "calico" }}
calicoctl delete node {{ .hostname }}
{{- end }}
kubectl delete node {{ .hostname }}
fi
roles:
- role: uninstall/kubernetes
when: .delete_nodes | default list | has .inventory_hostname
- role: uninstall/cri
when:
- .deleteCRI
- .groups.image_registry | default list | has .inventory_hostname | not
- .delete_nodes | default list | has .inventory_hostname
post_tasks:
- name: DeleteNode | Clean up local DNS configuration files
ignore_errors: true
loop: "{{ .native.localDNS | toJson }}"
command: |
sed -i ':a;$!{N;ba};s@# kubekey hosts BEGIN.*# kubekey hosts END@@' {{ .item }}
sed -i ':a;$!{N;ba};s@# kubekey kubernetes control_plane_endpoint BEGIN.*# kubekey kubernetes control_plane_endpoint END@@' {{ .item }}
sed -i ':a;$!{N;ba};s@# kubekey image_registry control_plane_endpoint BEGIN.*# kubekey image_registry control_plane_endpoint END@@' {{ .item }}
when:
- .deleteDNS
- .delete_nodes | default list | has .inventory_hostname
- hosts:
- etcd
roles:
- role: uninstall/etcd
when:
- .deleteETCD
- .delete_nodes | default list | has .inventory_hostname
- hosts:
- image_registry
roles:
- role: uninstall/image-registry
when:
- .deleteImageRegistry
- .delete_nodes | default list | has .inventory_hostname