In Part 1 of this series, we prepared the environment: defined the hardware, configured /etc/hosts, adjusted the firewall, and disabled SWAP on all nodes. Now that the foundation is ready, it's time to install the container runtime (containerd) and the Kubernetes packages themselves (kubelet and kubeadm).
All the steps below should be run on all servers in the cluster — master and workers — unless stated otherwise.
Loading kernel modules
Kubernetes, through containerd, depends on two Linux kernel modules: overlay (for the layered filesystem used by containers) and br_netfilter (so that bridge network traffic passes through iptables rules).
For these modules to load automatically on every boot, create the file /etc/modules-load.d/containerd.conf:






