kubernetes中token过期的处理办法

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

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过期的处理办法

我们在使用kubeadm部署kubernetes集群时,为了安全问题的考虑,默认生成的token的有效期是24小时,过期将失效,不过也可以在初始化master节...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息