kubernetes中token过期的处理办法
我们在使用kubeadm部署kubernetes集群时,为了安全问题的考虑,默认生成的token的有效期是24小时,过期将失效,不过也可以在初始化master节点的时候通过指定--ttl的值为0来强制生成一个永不过期的token(不推荐)。
为什么会分享这篇文章呢?是因为我在部署k8s集群的时候,步骤进行到刚把第一台master节点初始化完成,需要进行worker节点的加入时,由于要处理一个紧急的生产业务问题,然后就随手关闭了终端,导致初始化完成后回显的提示信息“丢失”。所以将处理此问题的过程形成了此文档加以记录。
下面我就分为以下两种情况进行简单介绍:
1. 类似于我上面的操作:关闭了终端窗口,或者这条命令在后续给忘记了,worker节点还没有开始执行.
2. token过期.
# 查看token
root@master:~# kubeadm token list
# 生成一个永不过期的token
root@master:~# kubeadm token create --ttl 0
r089pu.3pjmew8vrv9mimty
root@master:~# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
abcdef.0123456789abcdef 23h 2023-09-07T15:59:13Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
r089pu.3pjmew8vrv9mimty <forever> <never> authentication,signing <none> system:bootstrappers:kubeadm:default-node-toke
由于在创建token的时候指定了ttl的值为0,可以看到新生成的token的有效期就变成了永久。
我们在对master节点进行初始化后,正常的情况下,都可以看到如下一些内容,即让worker nodes节点加入的方法:
kubeadm join 172.19.53.150:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:2c062e93ff47d023801c8ab8a16d46c323e2977e54f7ed0de1a76b778dfe9589
我们来分解上面这条命令的组成:
172.19.53.150:6443:指定apiserver的地址及端口,也就是master节点或者是control-plane-endpoint的域名或者地址及端口。
--token:指定token值
--discovery-token-ca-cert-hash:这个和kubernetes的CA证书有关系。后面会讲如何获取。
## 忘记token的处理办法(token未过期)
1. 查看token值:
root@master:~# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
abcdef.0123456789abcdef 23h 2023-09-07T15:59:13Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
这里获取到的token值为:abcdef.0123456789abcdef
2. 获取ca证书sha256编码hash值(只适用于适用kubeadm方式部署的集群)
root@master:~# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
2c062e93ff47d023801c8ab8a16d46c323e2977e54f7ed0de1a76b778dfe9589
这里查看到的ca证书的sha256编码的哈希值为:2c062e93ff47d023801c8ab8a16d46c323e2977e54f7ed0de1a76b778dfe9589,如何通过二进制部署,需要按实际情况修改ca证书的存放路径。
3. 命令拼装加入节点
我们上面已经提到了将一个worker节点加入集群的命令组成,我们将以上两个步骤中获取到的token和ca证书的hash值按照格式拼接起来就可以正常执行加入worker节点的操作了。
kubeadm join 172.19.53.150:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:2c062e93ff47d023801c8ab8a16d46c323e2977e54f7ed0de1a76b778dfe9589
## token过期处理办法
1. 重新生成新的token
# 生成一个有效期为24小时的token
root@master:~# kubeadm token create
# 生成一个永久的token
root@master:~# kubeadm token create --ttl 0
# 查看新生成的token
root@master:~# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
abcdef.0123456789abcdef 23h 2023-09-07T15:59:13Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
r089pu.3pjmew8vrv9mimty <forever> <never> authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
以上集群是我在一小时前刚部署的,可以看到token的默认有效期为24小时,将在23小时后的2023-09-07T15:59:13Z过期。同时生成了一个永久的token。
2. 同以上“忘记token的处理办法(token未过期)”的第二步
3. 同以上“忘记token的处理办法(token未过期)”的第三步
kubernetes中token过期的处理办法
本文2024-09-16 17:45:08发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-17712.html