TL;DR
Your Kubernetes cluster is behaving correctly.
By default (if not specified otherwise) using kubeadm to provision your cluster, the --service-cidr is set to 10.96.0.0/12.
ClusterIP address like 10.110.15.13 would be included in the above mentioned network (10.96.0.0/12).
I've provided more explanation below:
Subnetting
If you use one of the available online IP calculators you will be seeing exact same situation like the one included below:
| CIDR |
10.96.0.0/12 |
| Subnet mask |
255.240.0.0 |
| Network address (first) |
10.96.0.0 |
| Broadcast address (last) |
10.111.255.255 |
| First useable address |
10.96.0.1 |
| Last useable address |
10.111.255.254 |
| Number of hosts allocatable |
1048574 |
By above diagram you can see that the Service IP range would be following:
This would make IP's like: 10.104.5.2, 10.110.15.13 be in range of above network.
Kubernetes --service-cidr
As said earlier if you don't specify the --service-cidr when using $ kubeadm init it will be set to default 10.96.0.0/12.
Following the official documentation of kubeadm:
--service-cidr string Default: "10.96.0.0/12"
Use alternative range of IP address for service VIPs.
-- Kubernetes.io: Docs: Reference: Setup tools: Kubeadm: Kubeadm init: Options
If you provision the cluster without this parameter, you will be able to see it configured in the:
$ kubectl get pods -n kube-system kube-apiserver-kubernetes-NODE_NAME -o yaml | grep "service-cluster-ip-range"
- --service-cluster-ip-range=10.96.0.0/12
$ kubectl get pods -n kube-system kube-controller-manager-kubernetes-NODE_NAME -o yaml | grep "service-cluster-ip-range"
- --service-cluster-ip-range=10.96.0.0/12
Kube-router
It's also explicitly stated in the kube-router's source code:
func NewKubeRouterConfig() *KubeRouterConfig {
return &KubeRouterConfig{
// SKIPPED
ClusterIPCIDR: "10.96.0.0/12",
// SKIPPED
}
}
-- Github.com: Cloudnativelabds: Kube-router: Pkg: Options: Options.go: Line 73
fs.StringVar(&s.ClusterIPCIDR, "service-cluster-ip-range", s.ClusterIPCIDR,
"CIDR value from which service cluster IPs are assigned. Default: 10.96.0.0/12")
-- Github.com: Cloudnativelabds: Kube-router: Pkg: Options: Options.go: Line 187
It's also referenced in the user guide.