当前位置: 首页 > 知识库问答 >
问题:

init令牌过期后加入集群?

阎晔
2023-03-14

几天前,我创建了一个Kubernetes集群,有一个主节点和一个工作节点。现在我想向集群添加另一个节点,但是主服务器上原来的“kubeadm init”打印的令牌已经过期(默认情况下是24小时后)。

“kubeadm join” 命令有一个 “--discovery-file”。它需要一个配置文件,我已经尝试了我在这里找到的格式:

https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.8.md

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <really long certificate data>
    server: https://10.138.0.2:6443
  name: ""
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []

我从正在工作的kubectl配置文件中复制了相应的数据,并创建了一个本地文件“a.config”。

但是,当我尝试命令“sudo kubeadm join --discovery-file a.conf”时,它失败并显示以下错误消息:

[discovery: Invalid value: "": token [""] was not of form ["^([a-z0-9]{6})\\.([a-z0-9]{16})$"], discovery: Invalid value: "": token must be of form '[a-z0-9]{6}.[a-z0-9]{16}']

我在这里错过了什么?

在我的情况下,什么是有效的程序?我宁愿不拆除集群并重新加入它。

共有3个答案

敖淮晨
2023-03-14

感谢@silverfox的回答,但手动输入这些命令仍然有点痛苦,所以我构建了以下命令来帮助我快速完成这项任务。

此命令将创建一个令牌并生成加入命令:

echo sudo kubeadm join $(kubeadm config view | grep ^controlPlaneEndpoint | awk '{print $2}') --token $(kubeadm token create) --discovery-token-ca-cert-hash sha256:$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //')
单于经纬
2023-03-14

使用kubeadm token create创建新的引导令牌,请参阅kubeadm:管理令牌。

# login to master node
# create a new bootstrap token
$ kubeadm token create
abcdef.1234567890abcdef

# get root ca cert fingerprint
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea 

# login to the new worker node
# join to cluster 
$ kubeadm join --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:e18105ef24bacebb23d694dad491e8ef1c2ea9ade944e784b1f03a15a0d5ecea 1.2.3.4:6443

注意:--dis聘用令牌-ca-cert-hash在库伯内特斯1.8及以上版本中是首选。

--发现文件提供了一种在主节点和引导节点之间建立信任根的带外方法。

如果您使用 kubeadm 构建自动配置,请考虑使用此模式。

发现文件没有提供有效的令牌,因此我们仍然需要kubeadm令牌create来创建一个新的令牌。

kubeadm join --token abcdef.1234567890abcdef --discovery-file a.conf
顾嘉良
2023-03-14

我知道将新节点加入现有集群的最简单方法是

kubeadm token create --print-join-command

这将产生这样的输出。

kubeadm join 192.168.10.15:6443 --token l946pz.6fv0XXXXX8zry --discovery-token-ca-cert-hash sha256:e1e6XXXXXXXXXXXX9ff2aa46bf003419e8b508686af8597XXXXXXXXXXXXXXXXXXX
 类似资料:
  • 当然,如果我们对每个请求进行一次到DB的往返,那么我们就可以验证帐户是有效的还是无效的。我的问题是,什么是最好的方法来照顾这种情况的长寿命代币。 提前道谢。

  • 我正在使用NodeJS访问Azure ServiceBus,它工作了好几天。突然,我开始收到错误 订阅删除错误:错误:401-ExpiredToken:。跟踪ID:xxxxxx-xxxxxxx,时间戳:2015年4月8日12:32:54 PM 我正在使用连接字符串连接到ServiceBus 只有一个共享访问策略“RootManageSharedAccessKey”具有“管理、发送、监听”的权限 这

  • 我是谷歌应用程序管理员,使用xoauth.py和IMAP下载用户邮件,没有用户密码。但这个过程在1小时后停止。我搜索了很多博客,我知道这个令牌在1小时后到期。谁能告诉我如何将过期时间延长到永远,或者如何刷新此令牌?

  • 我用ReactJS做单页网页登录。问题是如何以及在哪里保存令牌过期时间。我需要保存在sessionStore中,但当浏览器关闭时,所有的数据都将被删除。本地商店?但数据将永远。或者我可以在localStore中保存并在每个事件中添加函数,该函数检查localStore的过期时间,当事件触发成功时再次更新localStore?但代码看起来很可怕...性能问题呢?这大概可以接受吗?

  • 我在这里和这里面临着同样的问题,但他们没有得到回答,我有更多的信息和不同的设置,所以它不会重复。 我有一个Spring boot 1.5.13应用程序,使用带有keycloak 3.4.3服务器的Spring Security适配器。一切正常,但当我在5分钟后向应用程序发出ajax请求而没有重新加载页面时,响应返回401错误。我知道这是因为访问令牌已过期。 文件说明如下: 令牌最短生存时间在密钥斗

  • 我在我的应用程序中使用Google API,并且oAuth2刷新令牌在1小时后过期。我正在使用此刷新令牌执行每天运行的任务。我使用OAuth2游乐场创建刷新令牌。有没有办法延长刷新令牌的过期时间?(1个月)