summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2022-12-11 13:02:08 -0800
committerZac Medico <zmedico@gentoo.org>2022-12-11 13:13:48 -0800
commit70fa996d6be6a797e2d54c5320f021d23f30b249 (patch)
tree4704df5ef1d406d75d8a1321a55b98616728741e /sys-cluster/k3s
parentsys-cluster/k3s: drop 1.25.2_p1, 1.25.3_p1 (diff)
downloadgentoo-70fa996d6be6a797e2d54c5320f021d23f30b249.tar.gz
gentoo-70fa996d6be6a797e2d54c5320f021d23f30b249.tar.bz2
gentoo-70fa996d6be6a797e2d54c5320f021d23f30b249.zip
sys-cluster/k3s: add k3s-killall script
Closes: https://bugs.gentoo.org/885389 Signed-off-by: Zac Medico <zmedico@gentoo.org>
Diffstat (limited to 'sys-cluster/k3s')
-rw-r--r--sys-cluster/k3s/files/k3s-killall.sh78
-rw-r--r--sys-cluster/k3s/k3s-1.25.4_p1.ebuild1
2 files changed, 79 insertions, 0 deletions
diff --git a/sys-cluster/k3s/files/k3s-killall.sh b/sys-cluster/k3s/files/k3s-killall.sh
new file mode 100644
index 000000000000..a3aa2fcf3770
--- /dev/null
+++ b/sys-cluster/k3s/files/k3s-killall.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+[ $(id -u) -eq 0 ] || exec sudo $0 $@
+
+for bin in /var/lib/rancher/k3s/data/**/bin/; do
+ [ -d $bin ] && export PATH=$PATH:$bin:$bin/aux
+done
+
+set -x
+
+for service in /etc/systemd/system/k3s*.service; do
+ [ -s $service ] && systemctl stop $(basename $service)
+done
+
+for service in /etc/init.d/k3s*; do
+ [ -x $service ] && $service stop
+done
+
+pschildren() {
+ ps -e -o ppid= -o pid= | \
+ sed -e 's/^\s*//g; s/\s\s*/\t/g;' | \
+ grep -w "^$1" | \
+ cut -f2
+}
+
+pstree() {
+ for pid in $@; do
+ echo $pid
+ for child in $(pschildren $pid); do
+ pstree $child
+ done
+ done
+}
+
+killtree() {
+ kill -9 $(
+ { set +x; } 2>/dev/null;
+ pstree $@;
+ set -x;
+ ) 2>/dev/null
+}
+
+getshims() {
+ ps -e -o pid= -o args= | sed -e 's/^ *//; s/\s\s*/\t/;' | grep -w 'k3s/data/[^/]*/bin/containerd-shim' | cut -f1
+}
+
+killtree $({ set +x; } 2>/dev/null; getshims; set -x)
+
+do_unmount_and_remove() {
+ set +x
+ while read -r _ path _; do
+ case "$path" in $1*) echo "$path" ;; esac
+ done < /proc/self/mounts | sort -r | xargs -r -t -n 1 sh -c 'umount "$0" && rm -rf "$0"'
+ set -x
+}
+
+do_unmount_and_remove '/run/k3s'
+do_unmount_and_remove '/var/lib/rancher/k3s'
+do_unmount_and_remove '/var/lib/kubelet/pods'
+do_unmount_and_remove '/var/lib/kubelet/plugins'
+do_unmount_and_remove '/run/netns/cni-'
+
+# Remove CNI namespaces
+ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete
+
+# Delete network interface(s) that match 'master cni0'
+ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do
+ iface=${iface%%@*}
+ [ -z "$iface" ] || ip link delete $iface
+done
+ip link delete cni0
+ip link delete flannel.1
+ip link delete flannel-v6.1
+ip link delete kube-ipvs0
+ip link delete flannel-wg
+ip link delete flannel-wg-v6
+rm -rf /var/lib/cni/
+iptables-save | grep -v KUBE- | grep -v CNI- | grep -iv flannel | iptables-restore
+ip6tables-save | grep -v KUBE- | grep -v CNI- | grep -iv flannel | ip6tables-restore
diff --git a/sys-cluster/k3s/k3s-1.25.4_p1.ebuild b/sys-cluster/k3s/k3s-1.25.4_p1.ebuild
index 993f21c2a09d..aaae4d40b59d 100644
--- a/sys-cluster/k3s/k3s-1.25.4_p1.ebuild
+++ b/sys-cluster/k3s/k3s-1.25.4_p1.ebuild
@@ -92,6 +92,7 @@ src_compile() {
src_install() {
dobin "dist/artifacts/${PN}"
+ newbin "${FILESDIR}/k3s-killall.sh" k3s-killall
use kubectl-symlink && dosym k3s /usr/bin/kubectl
systemd_dounit "${FILESDIR}/${PN}.service"
newinitd "${FILESDIR}/${PN}.initd" "${PN}"