文章目錄
- 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