Skip to content

Instantly share code, notes, and snippets.

@BBijaya
Created May 4, 2022 05:01
Show Gist options
  • Save BBijaya/dc5ca73519d91d5a22cf854284cf7143 to your computer and use it in GitHub Desktop.
Save BBijaya/dc5ca73519d91d5a22cf854284cf7143 to your computer and use it in GitHub Desktop.
Install kubernetes on Debian based and Red Hat based systems
# setting selinux to permissive/disabled
SELINUX_STATE=$(getenforce)
if [ "$SELINUX_STATE" == "Enforcing" ]; then
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g'\
/etc/sysconfig/selinux
fi
# enabling the br_netfilter module for cluster communication
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
# Allowing iptalbes to see the bridged traffic correctly
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# Disable swap permanently
swapoff -a
sed '/^#/! {/swap/ s/^/#/}' -i /etc/fstab
# Install Docker prerequisite and docker
source /etc/os-release
distro=$ID
if [ "$distro" == "ubuntu" ]; then
#docker prerequisite
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
apt-transport-https \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# kubernetes google publick keyring
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
# add repo
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
# docker cgroup dirver
sudo tee /etc/docker/daemon.json <<-EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
#systemctl status docker
docker info | grep -i cgroup
# Install pin docker version
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
#sudo systemctl enable --now kubelet
elif [ "$distro" == "centos" ]; then
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
# docker cgroup driver
sed -i '/^ExecStart/ s/$/ --exec-opt native.cgroupdriver=systemd/' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl enable docker --now
systemctl status docker 2>&1
docker info | grep -i cgroup
# Add kubernetes repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# install and enable kubernetes
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment