github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/packages/distros/k3s/common/jackal-clean-k3s.sh (about)

     1  #!/bin/sh
     2  
     3  echo -e '\033[0;31m'
     4  
     5  for bin in /var/lib/rancher/k3s/data/**/bin/; do
     6  	[ -d $bin ] && export PATH=$PATH:$bin:$bin/aux
     7  done
     8  
     9  set -x
    10  
    11  for service in /etc/systemd/system/k3s*.service; do
    12  	[ -s $service ] && systemctl stop $(basename $service)
    13  done
    14  
    15  for service in /etc/init.d/k3s*; do
    16  	[ -x $service ] && $service stop
    17  done
    18  
    19  pschildren() {
    20  	ps -e -o ppid= -o pid= | \
    21  	sed -e 's/^\s*//g; s/\s\s*/\t/g;' | \
    22  	grep -w "^$1" | \
    23  	cut -f2
    24  }
    25  
    26  pstree() {
    27  	for pid in $@; do
    28  		echo $pid
    29  		for child in $(pschildren $pid); do
    30  			pstree $child
    31  		done
    32  	done
    33  }
    34  
    35  killtree() {
    36  	kill -9 $(
    37  		{ set +x; } 2>/dev/null;
    38  		pstree $@;
    39  		set -x;
    40  	) 2>/dev/null
    41  }
    42  
    43  getshims() {
    44  	ps -e -o pid= -o args= | sed -e 's/^ *//; s/\s\s*/\t/;' | grep -w 'k3s/data/[^/]*/bin/containerd-shim' | cut -f1
    45  }
    46  
    47  killtree $({ set +x; } 2>/dev/null; getshims; set -x)
    48  
    49  do_unmount_and_remove() {
    50  	awk -v path="$1" '$2 ~ ("^" path) { print $2 }' /proc/self/mounts | sort -r | xargs -r -t -n 1 sh -c 'umount "$0" && rm -rf "$0"'
    51  }
    52  
    53  do_unmount_and_remove '/run/k3s'
    54  do_unmount_and_remove '/var/lib/rancher/k3s'
    55  do_unmount_and_remove '/var/lib/kubelet/pods'
    56  do_unmount_and_remove '/var/lib/kubelet/plugins'
    57  do_unmount_and_remove '/run/netns/cni-'
    58  
    59  # Remove CNI namespaces
    60  ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete
    61  
    62  # Delete network interface(s) that match 'master cni0'
    63  ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do
    64  	iface=${iface%%@*}
    65  	[ -z "$iface" ] || ip link delete $iface
    66  done
    67  ip link delete cni0
    68  ip link delete flannel.1
    69  rm -rf /var/lib/cni/
    70  iptables-save | grep -v KUBE- | grep -v CNI- | iptables-restore
    71  
    72  if command -v systemctl; then
    73  	systemctl disable k3s
    74  	systemctl reset-failed k3s
    75  	systemctl daemon-reload
    76  fi
    77  
    78  rm -f /etc/systemd/system/k3s.service
    79  
    80  for cmd in kubectl crictl ctr; do
    81  	if [ -L /usr/sbin/$cmd ]; then
    82  		rm -f /usr/sbin/$cmd
    83  	fi
    84  done
    85  
    86  rm -rf /etc/rancher/k3s
    87  rm -rf /run/k3s
    88  rm -rf /run/flannel
    89  rm -rf /var/lib/rancher/k3s
    90  rm -rf /var/lib/kubelet
    91  rm -f /usr/sbin/k3s
    92  rm -f /usr/sbin/ctr
    93  rm -f /usr/sbin/crictl
    94  rm -f /usr/sbin/kubectl
    95  rm -f /opt/jackal/k3s-remove.sh
    96  rm -fr jackal-pki
    97  
    98  echo -e '\033[0m'