Provide node name to kubeadm init using config file

11/27/2018

I need to provide a specific node name to my master node in kuberenetes. I am using kubeadm to setup my cluster and I know there is an option --node-name master which you can provide to kubeadm init and it works fine.

Now, the issue is I am using the config file to initialise the cluster and I have tried various ways to provide that node-name to the cluster but it is not picking up the name. My config file of kubeadm init is:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: 10.0.1.149
  controlPlaneEndpoint: 10.0.1.149
etcd:
  endpoints:
  - http://10.0.1.149:2379
  caFile: /etc/kubernetes/pki/etcd/ca.pem
  certFile: /etc/kubernetes/pki/etcd/client.pem
  keyFile: /etc/kubernetes/pki/etcd/client-key.pem
networking:
  podSubnet: 192.168.13.0/24
kubernetesVersion: 1.10.3
apiServerCertSANs:
- 10.0.1.149
apiServerExtraArgs:
  endpoint-reconciler-type: lease
nodeRegistration:
  name: master

Now I run kubeadm init --config=config.yaml and it timeouts with following error:

[uploadconfig] Storing the configuration used in ConfigMap "kubeadm- 
config" in the "kube-system" Namespace
[markmaster] Will mark node ip-x-x-x-x.ec2.internal as master by 
adding a label and a taint
timed out waiting for the condition

PS: This issue also comes when you don't provide --hostname-override to kubelet along with --node-name to kubeadm init. I am providing both. Also, I am not facing any issues when I don't use config.yaml file and use command line to provide --node-name option to kubeadm init.

I want to know how can we provide --node-name option in config.yaml file. Any pointers are appreciated.

-- Prafull Ladha
kubeadm
kubernetes

1 Answer

11/27/2018

I am able to resolve this issue using the following config file, Just updating if anyone encounters the same issue:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: 10.0.1.149
  controlPlaneEndpoint: 10.0.1.149
etcd:
  endpoints:
  - http://10.0.1.149:2379
  caFile: /etc/kubernetes/pki/etcd/ca.pem
  certFile: /etc/kubernetes/pki/etcd/client.pem
  keyFile: /etc/kubernetes/pki/etcd/client-key.pem
networking:
  podSubnet: 192.168.13.0/24
kubernetesVersion: 1.10.3
apiServerCertSANs:
- 10.0.1.149
apiServerExtraArgs:
  endpoint-reconciler-type: lease
nodeName: master

This is the way you can specify --node-name in config.yaml

-- Prafull Ladha
Source: StackOverflow