根据用户的 cmets 看来,当有人运行此命令时:
kubeadm token create --print-join-command
应该填充两个字符串示例:
kubeadm join loadBalancerIP:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx
kubeadm join loadBalancerIP:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx --control-plane --certificate-key xxxx
不幸的是,它没有。可能是因为我使用的是 kubeadm 的自签名证书,也可能是因为部署在裸机节点上。
我总是设法用不同的方式解决我的问题。
根据官方文档Steps for the first control plane node:
“您还可以在初始化期间指定一个自定义的 --certificate-key,以后可以通过 join 使用。要生成这样的密钥,您可以使用以下命令:”
kubeadm alpha certs certificate-key
一旦用户在缩进的主主节点(尚未启动的节点)上运行命令,它应该会看到类似的内容:
# kubeadm alpha certs certificate-key
xxxx
然后正如文档所说:
"注意:kubeadm 初始化标志 --config 和 --certificate-key 不能混合使用,因此如果要使用 kubeadm 配置,您必须在适当的配置位置添加 certificateKey 字段(在 InitConfiguration 和JoinConfiguration: controlPlane)。”
在我的例子中,我使用了一个 conf 文件,所以我将内容添加到我的文件中:
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
certificateKey: xxxx
localAPIEndpoint:
advertiseAddress:
bindPort: 6443
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
---
etc etc
一旦用户拥有此密钥并使用此密钥启动主主节点(如上所示),下一步就是为辅助主节点使用完全相同的证书密钥,例如:
kubeadm join loadBalancerIP:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx --control-plane --certificate-key xxxx
注意:建议使用脚本生成此数据,以便在您销毁/创建主节点时使用新的证书密钥。
希望这对其他人的未来有所帮助,以免像我那样花那么多钱。