Skip to content

Instantly share code, notes, and snippets.

@crazytaxii
Last active August 1, 2023 01:51
Show Gist options
  • Save crazytaxii/802a5dc93d6a0cc2cb606709b2ac0d16 to your computer and use it in GitHub Desktop.
Save crazytaxii/802a5dc93d6a0cc2cb606709b2ac0d16 to your computer and use it in GitHub Desktop.
Preparing for installing kubeadm.
#!/bin/bash
set -e
CNI_VERSION="v1.3.0"
ARCH="amd64"
CRICTL_VERSION="v1.27.1"
setup_color() {
# Only use colors if connected to a terminal
if ! is_tty; then
FMT_RAINBOW=""
FMT_RED=""
FMT_GREEN=""
FMT_YELLOW=""
FMT_BLUE=""
FMT_BOLD=""
FMT_RESET=""
return
fi
if supports_truecolor; then
FMT_RAINBOW="
$(printf '\033[38;2;255;0;0m')
$(printf '\033[38;2;255;97;0m')
$(printf '\033[38;2;247;255;0m')
$(printf '\033[38;2;0;255;30m')
$(printf '\033[38;2;77;0;255m')
$(printf '\033[38;2;168;0;255m')
$(printf '\033[38;2;245;0;172m')
"
else
FMT_RAINBOW="
$(printf '\033[38;5;196m')
$(printf '\033[38;5;202m')
$(printf '\033[38;5;226m')
$(printf '\033[38;5;082m')
$(printf '\033[38;5;021m')
$(printf '\033[38;5;093m')
$(printf '\033[38;5;163m')
"
fi
FMT_RED=$(printf '\033[31m')
FMT_GREEN=$(printf '\033[32m')
FMT_YELLOW=$(printf '\033[33m')
FMT_BLUE=$(printf '\033[34m')
FMT_BOLD=$(printf '\033[1m')
FMT_RESET=$(printf '\033[0m')
}
install_container_runtime() {
echo "${FMT_GREEN}Installing containerd...${FMT_RESET}"
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install containerd.io -y
# Configure containerd
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
# Use systemd as cgroup driver
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl is-active --quiet containerd || sudo systemctl start containerd
sudo systemctl is-enabled --quiet containerd || sudo systemctl enable containerd
}
install_dep() {
# socat
echo "${FMT_GREEN}Installing socat...${FMT_RESET}"
sudo yum install -y socat
# tc
echo "${FMT_GREEN}Installing tc...${FMT_RESET}"
sudo yum install -y iproute-tc
# conntrack
echo "${FMT_GREEN}Installing conntrack...${FMT_RESET}"
sudo yum install -y conntrack
# CNI plugins
echo "${FMT_GREEN}Installing CNI plugins...${FMT_RESET}"
sudo mkdir -p /opt/cni/bin
sudo curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
DOWNLOAD_DIR=/usr/local/bin
sudo mkdir -p $DOWNLOAD_DIR
echo "${FMT_GREEN}Installing crictl...${FMT_RESET}"
# crictl
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
# kubeadm kubelet kubectl
RELEASE=$1
if [ -z $RELEASE ]; then
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
fi
echo "${FMT_GREEN}Installing kubeadm, kubelet and kubectl...${FMT_RESET}"
pushd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
sudo chmod +x {kubeadm,kubelet,kubectl}
popd
RELEASE_VERSION="v0.4.0"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
sudo mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
sudo systemctl is-enabled --quiet kubelet || sudo systemctl enable kubelet
}
os_config() {
# Disable SELinux
if [ "$(getenforce)" != "Disabled" ]; then
echo "${FMT_GREEN}Disabling SELinux...${FMT_RESET}"
sudo setenforce 0
sed -i "s/^SELINUX=.*$/SELINUX=disabled/g" /etc/selinux/config
fi
# Disable swap
if [ $(cat /proc/swaps | wc -l) -eq 2 ]; then
echo "${FMT_GREEN}Disabling swap...${FMT_RESET}"
sudo swapoff -a
sed -i "/ swap / s/^/#/" /etc/fstab
fi
}
br_netfilter() {
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
}
main() {
setup_color
if [[ $(systemctl cat firewalld.service > /dev/null 2>&1) -eq 0 ]]; then
sudo systemctl is-active --quiet firewalld && sudo systemctl stop firewalld
sudo systemctl is-enabled --quiet firewalld && sudo systemctl disable firewalld
fi
if [[ $(uname -p) == "aarch64" ]]; then
ARCH="aarch64"
fi
sudo yum update -y
br_netfilter
install_container_runtime
install_dep $1
os_config
}
main "$@"
@crazytaxii
Copy link
Author

crazytaxii commented Jan 12, 2021

sh -c "$(curl -fssL https://gist.githubusercontent.com/crazytaxii/802a5dc93d6a0cc2cb606709b2ac0d16/raw/40febedde7c6f2a5d1e183f5ce08171524b5e747/kubeadm-prerequisites.sh)"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment