Last active
March 2, 2025 00:28
-
-
Save jon/2c46e8f74f6e1acf566eb522daef281a to your computer and use it in GitHub Desktop.
Bootstrap Kubernetes-ready Node
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
CONTAINERD_VERSION=${CONTAINERD_VERSION:-2.0.0} | |
RUNC_VERSION=${RUNC_VERSION:-1.2.5} | |
KUBERNETES_VERSION=${KUBERNETES_VERSION:-1.32} | |
INSTALL_PREFIX=${INSTALL_PREFIX:-/usr/local} | |
ARCH=$(uname -m |sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/') | |
cat <<EOF | |
Bootstrap config: | |
CONTAINERD_VERSION=${CONTAINERD_VERSION} | |
RUNC_VERSION=${RUNC_VERSION} | |
KUBERNETES_VERSION=${KUBERNETES_VERSION} | |
INSTALL_PREFIX=${INSTALL_PREFIX} | |
ARCH=${ARCH} | |
EOF | |
CONTAINERD_URL="https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-${ARCH}.tar.gz" | |
echo "Extracting ${CONTAINERD_URL} to ${INSTALL_PREFIX}" | |
curl -fsSL "${CONTAINERD_URL}" |tar xzf - -C "${INSTALL_PREFIX}" | |
mkdir -p /etc/containerd | |
containerd config default |sed -e 's/SystemdCgroup\W*=\W*false/SystemdCgroup = true/' >/etc/containerd/config.toml | |
echo "Enabling containerd by default" | |
mkdir -p "${INSTALL_PREFIX}/lib/systemd/system" | |
curl -fsSL "https://raw.githubusercontent.com/containerd/containerd/main/containerd.service" >"${INSTALL_PREFIX}/lib/systemd/system/containerd.service" | |
systemctl daemon-reload | |
systemctl enable --now containerd | |
RUNC_URL="https://github.com/opencontainers/runc/releases/download/v${RUNC_VERSION}/runc.${ARCH}" | |
echo "Installing ${RUNC_URL} to ${INSTALL_PREFIX}/bin/runc" | |
curl -fsSL "${RUNC_URL}" >"${INSTALL_PREFIX}/bin/runc" | |
chmod 755 "${INSTALL_PREFIX}/bin/runc" | |
echo "Disabling swap if enabled" | |
swapoff -a | |
sed -e 's,^[^#]\(.*\Wswap\W\),# \1,' /etc/fstab -i'' | |
echo "Enabling IPv4 forwarding" | |
echo net.ipv4.ip_forward=1 >/etc/sysctl.d/99-ip_forward.conf | |
sysctl --system | |
echo "Installing Kubernetes components" | |
export DEBIAN_FRONTEND=noninteractive | |
apt-get update | |
apt-get install -yq apt-transport-https ca-certificates curl gpg | |
curl -fsSL https://pkgs.k8s.io/core:/stable:/v${KUBERNETES_VERSION}/deb/Release.key |gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg | |
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${KUBERNETES_VERSION}/deb/ /" |tee /etc/apt/sources.list.d/kubernetes.list | |
apt-get update | |
apt-get install -y kubelet kubeadm kubectl kubernetes-cni | |
apt-mark hold kubelet kubeadm kubectl kubernetes-cni | |
systemctl enable --now kubelet | |
echo "You're ready to kubernetes (heh)." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment