mirror of https://github.com/easzlab/kubeasz.git
175 lines
4.5 KiB
YAML
175 lines
4.5 KiB
YAML
# 警告:此脚本将清理整个K8S集群,包括所有POD、ETCD数据等
|
||
# 请三思后运行此脚本 ansible-playbook 99.clean.yml
|
||
|
||
# 清理 kube-node 相关服务
|
||
- hosts:
|
||
- kube-master
|
||
- new-master
|
||
- kube-node
|
||
- new-node
|
||
tasks:
|
||
- name: stop and disable kube-node service
|
||
service: name={{ item }} state=stopped enabled=no
|
||
with_items:
|
||
- kubelet
|
||
- kube-proxy
|
||
ignore_errors: true
|
||
|
||
- name: umount kubelet 挂载的目录
|
||
shell: "mount | grep '/var/lib/kubelet'| awk '{print $3}'|xargs umount"
|
||
ignore_errors: true
|
||
|
||
- name: 清理目录和文件
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/var/lib/kubelet/"
|
||
- "/var/lib/kube-proxy/"
|
||
- "/etc/systemd/system/kubelet.service"
|
||
- "/etc/systemd/system/kube-proxy.service"
|
||
- "/opt/kube/kube-system/"
|
||
|
||
# 清理 kube-master 相关
|
||
- hosts:
|
||
- kube-master
|
||
- new-master
|
||
tasks:
|
||
- name: stop and disable kube-master service
|
||
service: name={{ item }} state=stopped enabled=no
|
||
with_items:
|
||
- kube-apiserver
|
||
- kube-controller-manager
|
||
- kube-scheduler
|
||
ignore_errors: true
|
||
|
||
- name: 清理目录和文件
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/var/run/kubernetes"
|
||
- "/etc/systemd/system/kube-apiserver.service"
|
||
- "/etc/systemd/system/kube-controller-manager.service"
|
||
- "/etc/systemd/system/kube-scheduler.service"
|
||
|
||
# 清理集群docker服务、网络相关
|
||
- hosts:
|
||
- kube-master
|
||
- new-master
|
||
- kube-node
|
||
- new-node
|
||
tasks:
|
||
- name: 清理kube-router相关
|
||
shell: "{{ bin_dir }}/docker run --privileged --net=host cloudnativelabs/kube-router --cleanup-config"
|
||
ignore_errors: true
|
||
when: "CLUSTER_NETWORK == 'kube-router'"
|
||
|
||
- name: stop and disable docker service
|
||
service:
|
||
name: docker
|
||
state: stopped
|
||
enabled: no
|
||
ignore_errors: true
|
||
|
||
# 因为calico-kube-controller使用了host网络,相当于使用了docker -net=host,需要
|
||
# 卸载 /var/run/docker/netns/default
|
||
- name: 卸载docker 相关fs1
|
||
mount: path=/var/run/docker/netns/default state=unmounted
|
||
|
||
- name: 卸载docker 相关fs2
|
||
mount: path=/var/lib/docker/overlay state=unmounted
|
||
|
||
- name: 清理目录和文件
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/etc/cni/"
|
||
- "/root/.kube/"
|
||
- "/run/flannel/"
|
||
- "/etc/calico/"
|
||
- "/var/run/calico/"
|
||
- "/var/log/calico/"
|
||
- "/var/lib/cni/"
|
||
- "/var/lib/docker/"
|
||
- "/var/lib/kube-router/"
|
||
- "/var/run/docker/"
|
||
- "/etc/systemd/system/calico-node.service"
|
||
- "/etc/systemd/system/docker.service"
|
||
- "/etc/systemd/system/docker.service.requires/"
|
||
- "/opt/kube/kube-system/"
|
||
- "/etc/bash_completion.d/docker"
|
||
ignore_errors: true
|
||
|
||
- name: 清理 iptables
|
||
shell: "iptables -F && iptables -X \
|
||
&& iptables -F -t nat && iptables -X -t nat \
|
||
&& iptables -F -t raw && iptables -X -t raw \
|
||
&& iptables -F -t mangle && iptables -X -t mangle"
|
||
|
||
- name: 清理网络
|
||
shell: "ip link del docker0; \
|
||
ip link del tunl0; \
|
||
ip link del flannel.1; \
|
||
ip link del cni0; \
|
||
ip link del mynet0; \
|
||
ip link del kube-bridge; \
|
||
ip link del dummy0; \
|
||
systemctl restart networking; \
|
||
systemctl restart network"
|
||
ignore_errors: true
|
||
|
||
- name: 清理calico残留路由
|
||
shell: "for rt in `ip route|grep bird|sed 's/blackhole//'|awk '{print $1}'`;do ip route del $rt;done;"
|
||
when: "CLUSTER_NETWORK == 'calico'"
|
||
ignore_errors: true
|
||
|
||
# 清理etcd 集群相关
|
||
- hosts: etcd
|
||
tasks:
|
||
- name: stop and disable etcd service
|
||
service:
|
||
name: etcd
|
||
state: stopped
|
||
enabled: no
|
||
ignore_errors: true
|
||
|
||
- name: 清理目录和文件
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/var/lib/etcd"
|
||
- "/etc/etcd/"
|
||
- "/etc/systemd/system/etcd.service"
|
||
|
||
# 清理负载均衡相关
|
||
- hosts: lb
|
||
tasks:
|
||
- name: stop keepalived service
|
||
shell: systemctl disable keepalived && systemctl stop keepalived
|
||
ignore_errors: true
|
||
|
||
- name: stop haproxy service
|
||
shell: systemctl disable haproxy && systemctl stop haproxy
|
||
ignore_errors: true
|
||
|
||
- name: 清理LB 配置文件目录
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/etc/haproxy"
|
||
- "/etc/keepalived"
|
||
|
||
- hosts: all
|
||
tasks:
|
||
- name: 清理证书目录和文件
|
||
file: name={{ item }} state=absent
|
||
with_items:
|
||
- "/etc/kubernetes/"
|
||
- "{{ ca_dir }}"
|
||
- "/root/.kube/"
|
||
- "/etc/docker/"
|
||
|
||
- name: 清理自动生成的PATH
|
||
lineinfile:
|
||
dest: ~/.bashrc
|
||
state: absent
|
||
regexp: '{{ item }}'
|
||
with_items:
|
||
- 'kubeasz'
|
||
- 'helm'
|
||
- 'kubectl completion'
|