I have a two node k8s cluster working. I added another node to the cluster and the
sudo kubeadm join ...
command reported that the node had joined the cluster. The new node is stuck in the NotReady state:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
msi-ubuntu18 NotReady <none> 29m v1.19.0
tv Ready master 131d v1.18.6
ubuntu-18-extssd Ready <none> 131d v1.17.4
The journalctl -u kubelet shows this error:
Started kubelet: The Kubernetes Node Agent.
22039 server.go:198] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/l...
But the file /var/lib/kubelet/config.yaml exists and looks OK.
The sudo systemctl status kubelet shows a different error:
kubelet.go:2103] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plu
cni.go:239] Unable to update cni config: no networks found in /etc/cni/net.d
And there is no /etc/cni/ directory on the new node. (The existing node has /etc/cni/net.d/ with calico files in it.) If I run
on the master again it doesn't solve the problem. There is still no /etc/cni/ dir on the new node.
I must have missed a step when creating the new node. How do I get the /etc/cni/ directory on the new node? It's also puzzling that the kubeadm join ... command indicates success when the new node is stuck in NotReady.
Answers
For anyone else running into this problem, I was finally able to solve this by doing