如何为辅助控制平面节点生成kubeadm令牌



当我们启动主素数节点时,该节点使用ttl为辅助节点和主节点创建令牌。

根据文档kubeadm令牌(我也测试过,它有效(,我们可以发出命令并获得新的令牌(默认为ttl 24小时(:

kubeadm token create --print-join-command

我正试图弄清楚,如果我想添加一个新的平面节点(辅助主节点(,我如何创建一个相关的令牌?

我试着传递一些标志,例如:

kubeadm token create --print-join-command --control-plane

但是它失败了(当然(,因为这个标志没有被识别。

我还通过文档发现,我们可以直接链接到配置文件,例如ref kubeadm join/file或基于https的发现:

kubeadm join --discovery-file path/to/file.conf # (local file)
kubeadm join --discovery-file https://url/file.conf # (remote HTTPS URL)

在我的情况下,我没有本地conf文件,也没有计划使用url链接。

是否有其他方法可以使用平面节点而非工作节点的命令创建新令牌?

您需要在主上运行

kubeadm init phase upload-certs --upload-certs

记住输出。

然后你需要在主上运行

kubeadm token create --print-join-command

然后根据该输出编写用于加入主节点的加入命令,并将--control-plane --certificate-key xxxx添加到其中

请参阅此视频并举例说明:https://www.youtube.com/watch?v=27v36t-3afQ最有趣的是从20:40开始。由于版本较旧,视频中出现了一些"实验性"词语。

下面将为您的其他控制器创建join命令。

echo $(kubeadm token create --print-join-command) --control-plane --certificate-key $(kubeadm init phase upload-certs --upload-certs | grep -vw -e certificate -e Namespace)

根据用户的评论,当有人运行以下命令时:

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的自签名证书,也可能是因为部署在裸机节点上。

尽管如此,我还是设法用不同的方法解决了我的问题。

根据官方文件第一个控制平面节点的步骤:

";您还可以在初始化期间指定一个自定义的证书密钥,该密钥稍后可以由联接使用。要生成这样的密钥,可以使用以下命令:

kubeadm alpha certs certificate-key

一旦用户在缩进的主主节点(尚未启动的节点(上运行命令,它应该会看到这样的内容:

# kubeadm alpha certs certificate-key
xxxx

然后,正如文件所说:

";注意:kubeadm init标志--config和--certificate-key不能混合使用,因此,如果要使用kubeadm配置,则必须在相应的配置位置(在InitConfiguration和JoinConfiguration:controlPlane下(添加certificateKey字段">

在我的例子中,我使用了一个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

注意:建议使用脚本生成此数据,以便在销毁/创建主节点时使用新的证书密钥。

希望这对其他人的未来有所帮助,不要像我那样花那么多钱。

命令kubeadm token create没有任何标志--control-plane

从文档

运行命令kubeadm token create --print-join-command时,输出中会有两个命令,并使用带有--control-plane标志的命令来加入控制平面节点。

我相信没有单独的令牌可以添加更多的控制平面,您只需要在添加的同时添加--control-plane

获取加入命令kubeadm token create --print-join-command

假设证书已经上传并设置到位。更多详细信息可以在这里找到。https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/

编辑:很抱歉延迟更新kubeadm alpha certs certificate-key可用于创建密钥

然后使用kubeadm init phase upload-certs --upload-certs --certificate-key=<above key>上传

并使用它创建加入命令kubeadm token create --print-join-command --certificate-key <key created above>

对于其他控制平面,您可以将--control-plane传递到上面的join命令,而忽略工作节点的此标志

我想您需要下面的命令。

显示命令:

echo "$(kubeadm token create --print-join-command) --control-plane"
kubeadm join 192.168.5.50:8443 --token b99yno.3ju18t22w80ishlz --discovery-token-ca-cert-hash sha256:8f16b6d5304f070de0d32a6663ffaa30ac58163f9cfd38be4af405ac78c93b73  --control-plane

运行命令:

echo "$(kubeadm token create --print-join-command) --control-plane"|sh

相关内容

  • 没有找到相关文章

最新更新