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

Provide node name to kubeadm init using config file

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

现在,问题是我正在使用配置文件来初始化集群,并且我已经尝试了各种方法来为集群提供该节点名称,但它没有选择名称。我的 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 选项。感谢任何指点。

我可以使用以下配置文件解决这个问题,如果有人遇到同样的问题,只需更新:

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 的方式