Skip to content

Instantly share code, notes, and snippets.

@melvincv
Created November 3, 2023 04:31
Show Gist options
  • Save melvincv/f9e60dad2c0d72947cb9647802ef72da to your computer and use it in GitHub Desktop.
Save melvincv/f9e60dad2c0d72947cb9647802ef72da to your computer and use it in GitHub Desktop.
Library for Kubeadm Install
#!/bin/bash
# BASH Library File
# Define Functions
sethostname () {
# Set hostname if it not set
if [ $ISHOSTSET == 'n' ]; then
read -p "Enter the hostname to set: " HOST
sudo hostnamectl set-hostname ${HOST}
sudo sed -i "s/127.0.0.1 localhost/127.0.0.1 localhost ${HOST}/" /etc/hosts
sudo reboot
fi
}
needrestart () {
# Restart services automatically instead of prompting the user
if [ "$UBUNTU_CODENAME" == "jammy" ]; then
echo setting NEEDRESTART to auto...
sudo sed -i "s/#\$nrconf{restart} = 'i';/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.conf
fi
}
disableswap () {
# Disable Swap if it exists
if [ ! -z $(swapon -s) ]; then
echo Disable Swap Memory...
sudo swapoff -a &> /dev/null
sudo sed -i '/swap/d' /etc/fstab
fi
}
updatepodsubnet () {
if [ ${IS_MASTER} == 'y' ]; then
POD_SUBNET="172.16.0.0/16"
read -p "The Pod CIDR is ${POD_SUBNET}. Press Enter to continue or c to change: " CHANGE
if [ ! -z $CHANGE ]; then
read -p "Enter the Pod CIDR to use with kubeadm: " POD_SUBNET
fi
fi
}
kernelparamsetup () {
echo Forwarding IPv4 and letting iptables see 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
}
installcontainerd () {
# Install containerd
echo Installing dependencies...
sudo apt update
sudo apt install -y ca-certificates curl gnupg bash-completion
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo Adding the Docker repository...
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
echo Installing containerd...
sudo apt install -y containerd.io
# Configuring containerd for Kubernetes...
echo Configuring containerd for Kubernetes...
sudo su -c 'containerd config default > /etc/containerd/config.toml'
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
}
installk8s-128 () {
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo 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:/v1.28/deb/ /' | 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
}
installk8s-127 () {
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
}
installk8s-126 () {
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.26/deb/Release.key | sudo 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:/v1.26/deb/ /' | 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