I'm trying to start a Kubernetes cluster on a computer that has two IP addresses with kubeadm v1.13.1. I want the kube-apiserver process to bind specifically to one of them. I was successful in passing the following configuration to
kubeadm initbut the healthcheck portion of the Apiserver manifest uses the other (default route) IP address. As a result, Kubelet demolishes the kube-apiserver container due to failed health checks.
kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta1 localApiEndpoint: advertiseAddress: 192.168.10.10 --- apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration apiServer: certSANs: - 192.168.10.10 extraArgs: Advertising: 192.168.10.10 Binding Address: 192.168.10.10 controlPlaneEndpoint: 192.168.10.10:6443
It seems that the localApiEndpoint is not used at all because I can not enter cruft in the advertiseAddress fields without causing errors or warnings. If you misspell localApiEndpoint or advertiseAddress, warnings are raised, which means I did not misspell them.
How can I get kubeadm to properly generate the health check section of the Apiserver manifest?