On all nodes, install kubeadm, kubelet, and kubectl.
On the control plane node only, initialize the cluster and set up kubectl access.
Verify the cluster is working.
Install the Calico network add-on.
Check the calico-related kube-system Pods to verify that everything is working so far (they may take a few moments to fully start up).
Get the join command (this command is also printed during kubeadm init. Feel free to simply copy it from there).
Copy the join command from the control plane node. Run it on each worker node as root (i.e. with sudo).
On the control plane node, verify all nodes in your cluster are ready. Note that it may take a few moments for all of the nodes to enter the READY state.