文章目录
- 1、操作
- 2、问题现象
- 3、问题原因
- 4、问题解决
- 4.1、重新生成token
- 4.2、重新生成hash值
- 5、验证
1、操作
执行以下命令,让worker节点加入到master节点
kubeadm join 103.123.222.241:6443 --token vxe3v1.wzpnks8v1vbbtsu0 --discovery-token-ca-cert-hash sha256:038117f294d2e6d66ed97d447f97224209318dcd1ce6b12da5306411158e2e4f
2、问题现象
[preflight] Running pre-flight checks
error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "qs5sv6"
大概意思就是:API Server不能校验这次请求的身份信息。在ConfigMap里没有找到qs5sv6这个token。
3、问题原因
worker加入到master,master节点会校验worker join请求的hash值以及token值。token值是存在有效期的。因为我们的master节点创建好很长一段时间后,才执行的这个join操作,所以token过期了
4、问题解决
需要到API Server所在的master机器,重新生成token和hash值
4.1、重新生成token
kubeadm token create --ttl 2160h --description "Token for node joining"
vxe3v1.wzpnks8v1vbbtsu0 #控制台上输出的这一串是新的token值
4.2、重新生成hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \
openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'
# 控制台输出的这一串字母和数字的组合是新的hash值
038117f294d2e6d66ed97d447f97224209318dcd1ce6b12da5306411158e2e4f
5、验证
使用新的hash值和token值替换kubeadm join命令中的过期值,重新执行即可。执行成功后,我们可以到master节点查看新加入的worker节点。查看命令是:
kubectl get nodes