使用配置文件将节点名称提供给kubeadm init

时间:2018-11-27 06:11:29

标签: kubernetes kubeadm

我需要为kuberenetes中的主节点提供一个特定的节点名称。我正在使用kubeadm设置集群,我知道可以为kubeadm init提供一个选项--node-name master,它工作正常。

现在,问题是我正在使用配置文件初始化集群,并且我尝试了各种方法来向集群提供该节点名,但它没有选择名称。我的kubeadm init的配置文件是:

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

现在我运行kubeadm init --config=config.yaml,它超时并显示以下错误:

[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:当您不向kubelet提供--hostname-override到kubeadm init不提供--node-name时,也会出现此问题。我同时提供。另外,当我不使用config.yaml文件并使用命令行为kubeadm init提供--node-name选项时,我也没有遇到任何问题。

我想知道我们如何在config.yaml文件中提供--node-name选项。任何指针都表示赞赏。

1 个答案:

答案 0 :(得分:2)

我可以使用以下配置文件解决此问题,如果有人遇到相同的问题,只需更新即可。

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

这是您可以在config.yaml中指定--node-name的方式