几天前,我创建了一个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}']
我在这里错过了什么?
在我的情况下,什么是有效的程序?我宁愿不拆除集群并重新加入它。
感谢@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/^.* //')
使用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
我知道将新节点加入现有集群的最简单方法是
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个月)