|
|
|
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
|
|
|
|
VERSION=v0.1.0-rc3
|
|
|
|
|
|
|
|
info()
|
|
|
|
{
|
|
|
|
echo "[INFO] " "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
fatal()
|
|
|
|
{
|
|
|
|
echo "[ERROR] " "$@"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
ARCH=`uname -m`
|
|
|
|
|
|
|
|
case $ARCH in
|
|
|
|
amd64)
|
|
|
|
ARCH=amd64
|
|
|
|
SUFFIX=
|
|
|
|
;;
|
|
|
|
x86_64)
|
|
|
|
ARCH=amd64
|
|
|
|
SUFFIX=
|
|
|
|
;;
|
|
|
|
arm64)
|
|
|
|
ARCH=arm64
|
|
|
|
SUFFIX=-${ARCH}
|
|
|
|
;;
|
|
|
|
aarch64)
|
|
|
|
ARCH=arm64
|
|
|
|
SUFFIX=-${ARCH}
|
|
|
|
;;
|
|
|
|
arm*)
|
|
|
|
ARCH=arm
|
|
|
|
SUFFIX=-${ARCH}hf
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
fatal Unknown architecture $ARCH
|
|
|
|
esac
|
|
|
|
|
|
|
|
BINURL=https://github.com/ibuildthecloud/k3s/releases/download/${VERSION}/k3s${SUFFIX}
|
|
|
|
HASHURL=https://github.com/ibuildthecloud/k3s/releases/download/${VERSION}/sha256sum-${ARCH}.txt
|
|
|
|
|
|
|
|
if [ -d /run/systemd ]; then
|
|
|
|
SYSTEMD=true
|
|
|
|
else
|
|
|
|
fatal "Can not find systemd or Docker to use as a process supervisor for k3s"
|
|
|
|
fi
|
|
|
|
|
|
|
|
SUDO=sudo
|
|
|
|
if [ `id -u` = 0 ]; then
|
|
|
|
SUDO=
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$SYSTEMD" = "true" ]; then
|
|
|
|
info Creating uninstall script /usr/local/bin/k3s-uninstall.sh
|
|
|
|
TMPUNINSTALL=`mktemp -t k3s-install.XXXXXXXXXX`
|
|
|
|
cat > $TMPUNINSTALL << "EOF"
|
|
|
|
#!/bin/sh
|
|
|
|
set -x
|
|
|
|
systemctl stop k3s
|
|
|
|
systemctl disable k3s
|
|
|
|
systemctl daemon-reload
|
|
|
|
rm -f /etc/systemd/system/k3s.service
|
|
|
|
rm -f /usr/local/bin/k3s
|
|
|
|
if [ -L /usr/local/bin/kubectl ]; then
|
|
|
|
rm -f /usr/local/bin/kubectl
|
|
|
|
fi
|
|
|
|
if [ -L /usr/local/bin/crictl ]; then
|
|
|
|
rm -f /usr/local/bin/crictl
|
|
|
|
fi
|
|
|
|
if [ -e /sys/fs/cgroup/systemd/system.slice/k3s.service/cgroup.procs ]; then
|
|
|
|
kill -9 `cat /sys/fs/cgroup/systemd/system.slice/k3s.service/cgroup.procs`
|
|
|
|
fi
|
|
|
|
umount `cat /proc/self/mounts | awk '{print $2}' | grep '^/run/k3s'`
|
|
|
|
umount `cat /proc/self/mounts | awk '{print $2}' | grep '^/var/lib/rancher/k3s'`
|
|
|
|
|
|
|
|
rm -rf /var/lib/rancher/k3s
|
|
|
|
|
|
|
|
rm -f /usr/local/bin/k3s-uninstall.sh
|
|
|
|
EOF
|
|
|
|
chmod 755 $TMPUNINSTALL
|
|
|
|
$SUDO chown root:root $TMPUNINSTALL
|
|
|
|
$SUDO mv -f $TMPUNINSTALL /usr/local/bin/k3s-uninstall.sh
|
|
|
|
|
|
|
|
CURL=`which curl`
|
|
|
|
WGET=`which wget`
|
|
|
|
|
|
|
|
if [ -n "$CURL" ]; then
|
|
|
|
TMPHASH=`mktemp -t k3s-install.XXXXXXXXXX`
|
|
|
|
TMPBIN=`mktemp -t k3s-install.XXXXXXXXXX`
|
|
|
|
|
|
|
|
info Downloading $HASHURL
|
|
|
|
$CURL -o $TMPHASH -sfL $HASHURL
|
|
|
|
|
|
|
|
info Downloading $BINURL
|
|
|
|
$CURL -o $TMPBIN -sfL $BINURL
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
info Verifying download
|
|
|
|
EXPECTED=`grep k3s $TMPHASH | awk '{print $1}'`
|
|
|
|
ACTUAL=`sha256sum $TMPBIN | awk '{print $1}'`
|
|
|
|
rm -f $TMPHASH
|
|
|
|
if [ "$EXPECTED" != "$ACTUAL" ]; then
|
|
|
|
rm -f $TMPBIN
|
|
|
|
fatal "Download sha256 does not match ${EXPECTED} got ${ACTUAL}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
chmod 755 $TMPBIN
|
|
|
|
info Installing k3s to /usr/local/bin/k3s
|
|
|
|
|
|
|
|
$SUDO chown root:root $TMPBIN
|
|
|
|
$SUDO mv -f $TMPBIN /usr/local/bin/k3s
|
|
|
|
|
|
|
|
if [ ! -e /usr/local/bin/kubectl ]; then
|
|
|
|
info Creating /usr/local/bin/kubectl symlink to k3s
|
|
|
|
$SUDO ln -s k3s /usr/local/bin/kubectl
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -e /usr/local/bin/crictl ]; then
|
|
|
|
info Creating /usr/local/bin/crictl symlink to k3s
|
|
|
|
$SUDO ln -s k3s /usr/local/bin/crictl
|
|
|
|
fi
|
|
|
|
|
|
|
|
info systemd: Creating /etc/systemd/system/k3s.service
|
|
|
|
$SUDO tee /etc/systemd/system/k3s.service >/dev/null << "EOF"
|
|
|
|
[Unit]
|
|
|
|
Description=Lightweight Kubernetes
|
|
|
|
Documentation=https://k3s.io
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
|
|
|
ExecStartPre=-/sbin/modprobe overlay
|
|
|
|
ExecStart=/usr/local/bin/k3s server
|
|
|
|
KillMode=process
|
|
|
|
Delegate=yes
|
|
|
|
LimitNOFILE=infinity
|
|
|
|
LimitNPROC=infinity
|
|
|
|
LimitCORE=infinity
|
|
|
|
TasksMax=infinity
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
EOF
|
|
|
|
|
|
|
|
info systemd: Enabling k3s unit
|
|
|
|
$SUDO systemctl enable k3s.service >/dev/null
|
|
|
|
$SUDO systemctl daemon-reload >/dev/null
|
|
|
|
|
|
|
|
info systemd: Starting k3s
|
|
|
|
$SUDO systemctl start k3s.service
|
|
|
|
else
|
|
|
|
fatal "Can not find systemd"
|
|
|
|
fi
|