11.0 - Install Kubernetes the Kubeadm Way¶
- Decide on Configuration - Master vs Worker
- Install a container runtime (Docker, etc.)
- Install Kubeadm
- Initialise the Master Node
- Pod Network Setup
- Join worker nodes to the master node
Resources¶
Deploy with Kubeadm - Provision VMs with Vagrant¶
- Using links above, and ensuring Virtualbox and vagrant are installed, clone the repo and run
vagrant up - This will pull the images for the vms defined and kubernetes, creating a kubernetes master node and 2 workers
- To access any,
vagrant ssh <vm name>(can run commands to test things) - Check status with
vagrant status
Demo - Deploy with Kubeadm¶
- Ssh into kubemaster:
vagrant ssh kubemaster - Check
br_nefilteris deployed:lsmod | grep br_netfilter - Allows iptables to can see bridged traffic
- Load the kernel module:
sudo modprobe br_netfilter -
Run the previous
lsmodcommand for verification and repeat for each node. -
Load the relevant modules and iptables settings into a
k8s.conffile:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
- Run the rest as sudo by default:
sudo -i - Install container runtime e.g. Docker via supporting documentation.
-
Install kubeadm, kubectl and kubelet via supporting documentation.
-
Note: If not using Docker as the container runtime, additional configuration may be needed for the CGroup
-
Creating the cluster starts with initializing the master node:
kubadm init --pod-network-cidrs <range> --apiserver-advertise-address <masternode address> -
Command sample:
kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address=192.168.56.2 -
Install a pod network addon upon initialization e.g. Flannel, Weave, Calico; each has their own supporting documentation for this.
-
Once complete, instructions are provided on how to start using the cluster, including setting the kubeconfig location and ownership.
-
Worker nodes can be added to the cluster by running the provided command upon initialisation:
sudo kubeadm join .... <parameters>