mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
Add k3s-killall.sh script to installer
This commit is contained in:
parent
0726ce75e9
commit
7ca50efb8b
102
install.sh
102
install.sh
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user