0

I'm attempting to start a kubernetes cluster on a machine that has two ip-addresses with kubeadm v1.13.1. I'd like the kube-apiserver process to bind to one of them specifically. I've been successfull in doing this with the following configuration passed in to kubeadm init, but the healthcheck portion of the apiserver manifest uses the other (default route) ip-address. This causes kubelet to tear down the kube-apiserver container due to failed healthchecks.

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:
    advertise-address: 192.168.10.10
    bind-address: 192.168.10.10
controlPlaneEndpoint: 192.168.10.10:6443

It appears the localApiEndpoint isn't being used at all as I can put any cruft in the advertiseAddress fields without causing errors or warnings. Misspelling localApiEndpoint or advertiseAddress does cause warnings which implies I haven't misspelled these.

How can I get kubeadm to properly generate the health check section of the apiserver manifest?

Albert
  • 11
  • 3

1 Answers1

1

I misspelled localAPIEndpoint as localApiEndpoint. Fixing the spelling fixed the issue.

Interestingly:

  • localApiEndpoint - appears to be silently ignored
  • localAPIEndpoint - works correctly
  • localAPIEndpoints - causes a warning
Albert
  • 11
  • 3