Skip to content

Instantly share code, notes, and snippets.

@isennkubilay
Last active January 23, 2023 18:59
Show Gist options
  • Save isennkubilay/c6dfed69f8dc4ffb1d69e8d6db684f57 to your computer and use it in GitHub Desktop.
Save isennkubilay/c6dfed69f8dc4ffb1d69e8d6db684f57 to your computer and use it in GitHub Desktop.
kubernetes

Update the package index

sudo apt-get update

Update packages required for HTTPS package repository access

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

Load br_netfilter module

sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sysctl params required by setup, params 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

Apply sysctl params without reboot

sudo sysctl --system

Add Docker’s official GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Set up the repository

echo \
  "deb [arch=amd64 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
# Install containerd
sudo apt-get update
sudo apt-get install -y containerd.io=1.6.15-1

Configure the systemd cgroup driver

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

sudo apt-mark hold kubelet kubeadm kubectl

kubeadm

sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=stable-1.24

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Network

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Worker Node

sudo kubeadm join 10.0.0.100:6443 --token ... --discovery-token-ca-cert-hash sha256:...

Kubernetes Installation Automation Scripts

# Installation on all nodes
sudo apt-get update && sudo apt-get install -y apt-transport-https curl 

### DOCKER ###
# Add the Docker Repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" 

# Add the Kubernetes repository
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 
cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list 
deb https://apt.kubernetes.io/ kubernetes-xenial main 
EOF
### DOCKER ###

### KUBERNETES ###
# Install Docker, Kubeadm, Kubelet, and Kubectl 
sudo apt-get update 
sudo apt-get install -y vim git docker-ce kubelet kubeadm kubectl containerd.io docker-ce-cli
sudo apt-mark hold kubelet kubeadm kubectl
### KUBERNETES ###

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

# Enable net.bridge.bridge-nf-call-iptables
echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf 
sudo sysctl -p


# Installing Docker runtime:

# Create required directories
sudo mkdir -p /etc/systemd/system/docker.service.d

# Create daemon json config file
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

# Start and enable Services
sudo systemctl daemon-reload 
sudo systemctl restart docker
sudo systemctl enable docker

# Initialize the cluster and configure kubectl
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Install the flannel networking plugin
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment