Add k3s-killall.sh script to installer

This commit is contained in:
Erik Wilson 2019-05-01 14:14:25 -07:00
parent 0726ce75e9
commit 7ca50efb8b

View File

@ -125,6 +125,13 @@ setup_env() {
fi
SERVICE_K3S=${SYSTEM_NAME}.service
UNINSTALL_K3S_SH=${SYSTEM_NAME}-uninstall.sh
KILLALL_K3S_SH=k3s-killall.sh
# --- use sudo if we are not already root ---
SUDO=sudo
if [ `id -u` = 0 ]; then
SUDO=
fi
# --- use systemd type if defined or create default ---
if [ -n "${INSTALL_K3S_TYPE}" ]; then
@ -161,13 +168,10 @@ setup_env() {
FILE_K3S_ENV=/etc/rancher/k3s/${SYSTEM_NAME}.env
fi
# --- use sudo if we are not already root ---
SUDO=sudo
if [ `id -u` = 0 ]; then
SUDO=
fi
# --- get hash of config & exec for currently installed k3s ---
PRE_INSTALL_HASHES=`get_installed_hashes`
# --- if bin directory is read only skip download ---
if [ "${INSTALL_K3S_BIN_DIR_READ_ONLY}" = "true" ]; then
INSTALL_K3S_SKIP_DOWNLOAD=true
fi
@ -342,6 +346,63 @@ create_symlinks() {
fi
}
# --- create killall script ---
create_killall() {
[ "${INSTALL_K3S_BIN_DIR_READ_ONLY}" = "true" ] && return
info "Creating killall script ${BIN_DIR}/${KILLALL_K3S_SH}"
$SUDO tee ${BIN_DIR}/${KILLALL_K3S_SH} >/dev/null << \EOF
#!/bin/sh
set -x
[ `id -u` = 0 ] || exec sudo $0 $@
for bin in /var/lib/rancher/k3s/data/**/bin/; do
[ -d $bin ] && export PATH=$bin:$PATH
done
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
pstree() {
for pid in $@; do
echo $pid
pstree $(ps -o ppid= -o pid= | awk "\$1==$pid {print \$2}")
done
}
killtree() {
[ $# -ne 0 ] && kill $(set +x; pstree $@; set -x)
}
killtree $(lsof | sed -e 's/^[^0-9]*//g; s/ */\t/g' | grep -w 'k3s/data/[^/]*/bin/containerd-shim' | cut -f1 | sort -n -u)
do_unmount() {
MOUNTS=`cat /proc/self/mounts | awk '{print $2}' | grep "^$1" | sort -r`
if [ -n "${MOUNTS}" ]; then
umount ${MOUNTS}
fi
}
do_unmount '/run/k3s'
do_unmount '/var/lib/rancher/k3s'
nets=$(ip link show | grep 'master cni0' | awk -F': ' '{print $2}' | sed -e 's|@.*||')
for iface in $nets; do
ip link delete $iface;
done
ip link delete cni0
ip link delete flannel.1
rm -rf /var/lib/cni/
EOF
$SUDO chmod 755 ${BIN_DIR}/${KILLALL_K3S_SH}
$SUDO chown root:root ${BIN_DIR}/${KILLALL_K3S_SH}
}
# --- create uninstall script ---
create_uninstall() {
[ "${INSTALL_K3S_BIN_DIR_READ_ONLY}" = "true" ] && return
@ -349,12 +410,19 @@ create_uninstall() {
$SUDO tee ${BIN_DIR}/${UNINSTALL_K3S_SH} >/dev/null << EOF
#!/bin/sh
set -x
[ \`id -u\` = 0 ] || exec sudo \$0 \$@
${BIN_DIR}/${KILLALL_K3S_SH}
if which systemctl; then
systemctl kill ${SYSTEM_NAME}
systemctl disable ${SYSTEM_NAME}
systemctl reset-failed ${SYSTEM_NAME}
systemctl daemon-reload
fi
if which rc-update; then
rc-update delete ${SYSTEM_NAME} default
fi
rm -f ${FILE_K3S_SERVICE}
rm -f ${FILE_K3S_ENV}
@ -368,22 +436,6 @@ if (ls ${SYSTEMD_DIR}/k3s*.service || ls /etc/init.d/k3s*) >/dev/null 2>&1; then
exit
fi
do_unmount() {
MOUNTS=\`cat /proc/self/mounts | awk '{print \$2}' | grep "^\$1"\`
if [ -n "\${MOUNTS}" ]; then
umount \${MOUNTS}
fi
}
do_unmount '/run/k3s'
do_unmount '/var/lib/rancher/k3s'
nets=\$(ip link show master cni0 | grep cni0 | awk -F': ' '{print \$2}' | sed -e 's|@.*||')
for iface in \$nets; do
ip link delete \$iface;
done
ip link delete cni0
ip link delete flannel.1
if [ -L ${BIN_DIR}/kubectl ]; then
rm -f ${BIN_DIR}/kubectl
fi
@ -394,6 +446,7 @@ fi
rm -rf /etc/rancher/k3s
rm -rf /var/lib/rancher/k3s
rm -f ${BIN_DIR}/k3s
rm -f ${BIN_DIR}/${KILLALL_K3S_SH}
EOF
$SUDO chmod 755 ${BIN_DIR}/${UNINSTALL_K3S_SH}
$SUDO chown root:root ${BIN_DIR}/${UNINSTALL_K3S_SH}
@ -492,7 +545,7 @@ create_service_file() {
# --- get hashes of the current k3s bin and service files
get_installed_hashes() {
sha256sum ${BIN_DIR}/k3s ${FILE_K3S_SERVICE} ${FILE_K3S_ENV} 2>&1 || true
$SUDO sha256sum ${BIN_DIR}/k3s ${FILE_K3S_SERVICE} ${FILE_K3S_ENV} 2>&1 || true
}
# --- enable and start systemd service ---
@ -542,6 +595,7 @@ service_enable_and_start() {
setup_env ${INSTALL_K3S_EXEC} $@
download_and_verify
create_symlinks
create_killall
create_uninstall
systemd_disable
create_env_file