|
|
|
@ -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
|
|
|
|
|