In order to understand a bit more about cloud technologies I'm trying to create a Kubernetes High Availability Cluster using 6 Raspberry Pi 3's. The goal is 3 stacked masters and 3 workers.
I've followed the instructions at: https://kubernetes.io/docs/setup/independent/high-availability/ but whenever I include:
api:
controlPlaneEndpoint: "master"
in the kubeadm-config.yaml I end up in a situation where CoreDNS services aren't deployed:
root@master-1:~# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system etcd-master-1 1/1 Running 0 39m
kube-system kube-apiserver-master-1 1/1 Running 0 39m
kube-system kube-controller-manager-master-1 1/1 Running 0 39m
kube-system kube-scheduler-master-1 1/1 Running 0 38m
The deployment is installed, but for some reason it's not activated when I use the controlPlaneEndpoint directive.
root@master-1:~# kubectl get deployments -n kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
coredns 2 0 0 0 41m
It's like it's not even trying.
If I exclude the controlPlaneEndpoint directive from kubeadm-conf.yaml its deployed correctly but then I cannot add the other masters without errors from kube-controller-manager and kube-scheduler
root@master-1:~# kubectl logs -n kube-system kube-controller-manager-master-2
invalid configuration: no configuration has been provided
root@master-1:~# kubectl logs -n kube-system kube-scheduler-master-2
invalid configuration: no configuration has been provided
I would expect CoreDNS to become 'Pending' until a CNI plugin has been installed.
This is driving me nuts. It feels like it's so close to working!
Any pointers are welcome.
Thanks,
// Fredrik