Created
June 15, 2022 12:20
-
-
Save hossainemruz/7b66f36fc2b104f3d038669a3b071197 to your computer and use it in GitHub Desktop.
Bash script to automatically install and configure container runtime, cni plugins etc
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 -eou pipefail | |
#========== Step 1: Disable Swap ============ | |
echo "Disabling Swap......." | |
sudo swapoff -a | |
sudo sed -i '/^[^#]/ s/\(^.*swap.*$\)/#\1/' /etc/fstab | |
free -h | |
echo "" | |
#========= Step 2: Forward IPv4 network and let iptables to see bridged traffic ============= | |
echo "Forwarding IPv4 network and enabling bridged traffic....." | |
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf | |
overlay | |
br_netfilter | |
EOF | |
sudo modprobe overlay | |
sudo modprobe br_netfilter | |
# sysctl params required by setup, params persist across reboots | |
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf | |
net.bridge.bridge-nf-call-iptables = 1 | |
net.bridge.bridge-nf-call-ip6tables = 1 | |
net.ipv4.ip_forward = 1 | |
EOF | |
# Apply sysctl params without reboot | |
sudo sysctl --system | |
echo "" | |
# ======== Step 3: Install containerd ==================== | |
echo "Installing containerd......" | |
wget https://github.com/containerd/containerd/releases/download/v1.6.6/containerd-1.6.6-linux-amd64.tar.gz | |
tar Cxzvf /usr/local containerd-1.6.6-linux-amd64.tar.gz | |
# automatically start containerd using systemd | |
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service | |
sudo mkdir -p /usr/local/lib/systemd/system/ | |
sudo mv ./containerd.service /usr/local/lib/systemd/system/ | |
systemctl daemon-reload | |
systemctl enable --now containerd | |
echo "" | |
# ================ Step 4: Install runc ============== | |
echo "Installing runc.................." | |
wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64 | |
sudo install -m 755 runc.amd64 /usr/local/sbin/runc | |
echo "" | |
# ============== Step 5: Install CNI Plugins ======== | |
echo "Installing CNI Plugins.......... " | |
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz | |
mkdir -p /opt/cni/bin | |
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz | |
echo "" | |
# ============ Step 5: Generate config.toml for cont | |
echo "Configuring containerd........" | |
sudo mkdir -p /etc/containerd | |
containerd config default | sudo tee /etc/containerd/config.toml | |
echo "" | |
# ========= Step 6: Use cgroup v2 =============== | |
echo "Configuring the systemd cgroup driver" | |
sudo sed -i 's/SystemdCgroup.*/SystemdCgroup = true/g' /etc/containerd/config.toml | |
sudo systemctl restart containerd | |
# =========== Step 7: Install kubeadm,kubelet,kubectl | |
sudo apt update | |
sudo apt install -y apt-transport-https ca-certificates curl | |
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg | |
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list | |
sudo apt update | |
sudo apt install -y kubelet kubeadm kubectl | |
sudo apt-mark hold kubelet kubeadm kubectl | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment