Secret IT Engineer

Blogs you've never heard of

MultiPass Kubernetes Cluster Bring-Up Pt2

 

This is the second post in a two part series about making K8s Clusters quicker and simpler to deploy, the first part focussed on deploying on a Mac using Multipass, but actually I’ve used loads of different mechanisms to deploy the hosting container VM’s, which then kick off this script. I’ve probably post them at some point too.

 

There’s another part of this where I used a watch file to wait for the master node to be built, export the cluster joining hash, which completely automates the master & worker node deployment.

 

Master Node

#! /bin/bash

 

sudo apt update

sudo apt -y upgrade

sudo apt -y install curl apt-transport-https

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add –

echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update

sudo apt -y install vim git wget kubelet kubeadm kubectl curl gnupg2 software-properties-common apt-transport-https ca-certificates

sudo apt-mark hold kubelet kubeadm kubectl

sudo sed -i ‘/ swap / s/^\(.*\)$/#\1/g’ /etc/fstab

sudo swapoff -a

# Enable kernel modules

sudo modprobe overlay

sudo modprobe br_netfilter

# Add some settings to sysctl

sudo tee /etc/sysctl.d/kubernetes.conf<<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

# Reload sysctl

sudo sysctl –system

# old sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

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”

sudo apt update

sudo apt install -y containerd.io docker-ce docker-ce-cli

sudo mkdir -p /etc/systemd/system/docker.service.d

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

 

sudo systemctl daemon-reload

sudo systemctl restart docker

sudo systemctl enable docker

sudo systemctl enable kubelet

 

sudo kubeadm init \

–pod-network-cidr=172.16.0.0/16 > ./”k8s_output.txt”

 

rm /mnt/synserver/Lab/Scripts/Kuberbetes/Logs/k8s-cp-install_log_latest.txt && tail -2 ./k8s_output.txt >> /mnt/synserver/Lab/Scripts/Kuberbetes/Logs/k8s-cp-install_log_latest.txt

cp /mnt/synserver/Lab/Scripts/Kuberbetes/Logs/”k8s-cp-install_log_latest.txt” /mnt/synserver/Lab/Scripts/Kuberbetes/Logs/”k8s-cp-install_log_$(date +”%Y_%m_%d_%I_%M”).txt”

 

mkdir -p $HOME/.kube

sudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml

kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

 

kubectl get pods –all-namespaces

 

Worker Nodes

#! /bin/bash

 

sudo apt update

sudo apt -y upgrade

sudo apt -y install curl apt-transport-https

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add –

echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update

sudo apt -y install vim git wget kubelet kubeadm kubectl curl gnupg2 software-properties-common apt-transport-https ca-certificates

sudo apt-mark hold kubelet kubeadm kubectl

sudo sed -i ‘/ swap / s/^\(.*\)$/#\1/g’ /etc/fstab

sudo swapoff -a

# Enable kernel modules

sudo modprobe overlay

sudo modprobe br_netfilter

# Add some settings to sysctl

sudo tee /etc/sysctl.d/kubernetes.conf<<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

# Reload sysctl

sudo sysctl –system

# old sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

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”

sudo apt update

sudo apt install -y containerd.io docker-ce docker-ce-cli

sudo mkdir -p /etc/systemd/system/docker.service.d

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

 

sudo systemctl daemon-reload

sudo systemctl restart docker

sudo systemctl enable docker

sudo systemctl enable kubelet

 

/mnt/synserver/Lab/Scripts/Kuberbetes/Logs/”k8s-cp-install_log_latest.txt”

Published by

Leave a comment