两种方法:
1.生成初始化kubeadm-config文件:
kubeadm config print init-defaults > kubeadm-config.yaml
修改如下
advertiseAddress:为master的IP(不是vip)
将CoreDNS部分注释掉如下图
master1执行
kubeadm init phase upload-certs --upload-certs --config kubeadm-config.yaml
将获取到certificate key:
e96f1f907729f233dd2f2f74e2565b6d82a0f1272653aa6643476adb15ed4925
master1节点执行
[root@master1 opt]# kubeadm token create --print-join-command
W0516 23:56:09.112502 2226477 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join 10.136.102.40:6443 --token zkml4w.gh9kvs6f0nqiafmr --discovery-token-ca-cert-hash sha256:cd5a695e529a4131d7b8e0f6799aa18dae1203192295fd12cd58a9c8fb481f64
在要加入的节点master3执行即可
[root@master3 kubernetes]# kubeadm join 10.136.102.40:6443 --token zkml4w.gh9kvs6f0nqiafmr --discovery-token-ca-cert-hash sha256:cd5a695e529a4131d7b8e0f6799aa18dae1203192295fd12cd58a9c8fb481f64 --control-plane --certificate-key e96f1f907729f233dd2f2f74e2565b6d82a0f1272653aa6643476adb15ed4925
2. 生成用于添加节点的kubeadm-config.yaml文件
kubeadm config print join-defaults > kubeadm-config.yaml
修改三个地方:
apiServerEndpoint:连接apiserver的地址,即master的api地址,这里可以改为192.168.0.1:6443,如果master集群部署的话,这里需要改为集群vip地址
token及tlsBootstrapToken:连接master使用的token,这里需要与master上的InitConfiguration中的token配置一致
name:node节点的名称,如果使用主机名,需要确保master节点可以解析该主机名。否则的话可直接使用ip地址
添加节点到集群
kubeadm join --config kubeadm-config.yaml