I am trying to import an existing Kubernetes cluster (which was set up by using this installation instructions).
Basic overview:
- CentOS 8
- Kubernetes 1.22
- CRI-O 1.22
- Rancher 2.5.11
Unfortunately, Rancher is stuck with the message “Waiting for API to be available”. By taking a closer look at the API configuration (which, I presume, was created from information reported back by the cattle cluster agent), I kind of understand why. The API endpoint is set to “https://10.96.0.1:443”. This is the internal IP of the “kubernetes” service, so of course the Rancher server can’t connect to that.
$ kubectl get service --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
calico-apiserver calico-api ClusterIP 10.98.207.137 <none> 443/TCP 112m
calico-system calico-kube-controllers-metrics ClusterIP 10.97.0.222 <none> 9094/TCP 114m
calico-system calico-typha ClusterIP 10.102.202.143 <none> 5473/TCP 115m
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 59d
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 59d
What I don’t understand is, why that IP was reported back to Rancher as API endpoint. Shouldn’t this be the same address, which is reported by the kubectl config view
command and which is the actual physical IP adress of my kubernetes CTL node?
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://172.20.37.107:6443
name: kubernetes
[....]
$ kubectl cluster-info
Kubernetes control plane is running at https://172.20.37.107:6443
CoreDNS is running at https://172.20.37.107:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
[...]
$ ifconfig
[...]
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.37.107 netmask 255.255.255.0 broadcast 172.20.37.255
[...]
What am I missing? How can successfully “connect” my Kubernetes cluster with Rancher?