k8s node节点加入主节点报错

博客主要介绍了Kubernetes的两个常见报错。报错1是因之前已加入过,解决办法是重置后重新加入;报错2的解决方式是重新生成新token,包括在master节点重新生成token,node节点重新join,还给出了相关参考文档。
部署运行你感兴趣的模型镜像

一,报错1

参考文档:
https://blog.youkuaiyun.com/qianghaohao/article/details/82624920
https://www.cnblogs.com/wangzy-tongq/p/13130877.html

[root@k8s-node01 gudong]# kubeadm join 192.168.31.232:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:b5bfe6c4e3cef6455e33c5de503035c49c59da41c3cdbc504b8e7f92d3d329ea
[preflight] Running pre-flight checks
	[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.2. Latest validated version: 18.09
error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
	[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

原因:之前已经加入过一次
解决办法:重置后重新加入

[root@k8s-node01 gudong]# kubeadm reset
[reset] Reading configuration from the cluster...
[reset] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
W0225 20:37:19.258565   11300 reset.go:98] [reset] Unable to fetch the kubeadm-config ConfigMap from cluster: failed to get config map: Get https://192.168.31.233:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config: dial tcp 192.168.31.233:6443: connect: connection refused
[reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
[reset] Are you sure you want to proceed? [y/N]: y
[preflight] Running pre-flight checks
W0225 20:37:43.329899   11300 removeetcdmember.go:79] [reset] No kubeadm config, using etcd pod spec to get data directory
[reset] No etcd config found. Assuming external etcd
[reset] Please, manually reset etcd to prevent further issues
[reset] Stopping the kubelet service
[reset] Unmounting mounted directories in "/var/lib/kubelet"
[reset] Deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]
[reset] Deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf]
[reset] Deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]

The reset process does not reset or clean up iptables rules or IPVS tables.
If you wish to reset iptables, you must do so manually.
For example:
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

If your cluster was setup to utilize IPVS, run ipvsadm --clear (or similar)
to reset your system's IPVS tables.

The reset process does not clean your kubeconfig files and you must remove them manually.
Please, check the contents of the $HOME/.kube/config file.
[root@k8s-node01 gudong]# 

重新加入:

[root@k8s-node01 gudong]# kubeadm join 192.168.31.232:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:b5bfe6c4e3cef6455e33c5de503035c49c59da41c3cdbc504b8e7f92d3d329ea 

二,报错2

参考文档:
https://www.cnblogs.com/winstom/p/11684921.html(主)
https://blog.youkuaiyun.com/weixin_44723434/article/details/94583457

[root@k8s-node01 gudong]# kubeadm join 192.168.31.232:6443 --token abcdef.0123456789abcdef \
>     --discovery-token-ca-cert-hash sha256:b5bfe6c4e3cef6455e33c5de503035c49c59da41c3cdbc504b8e7f92d3d329ea
[preflight] Running pre-flight checks
	[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.2. Latest validated version: 18.09
error execution phase preflight: couldn't validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s

解决:重新生成新token
在master节点重新生成token:

[root@k8s-master01 gudong]#kubeadm token create
ikkd3i.tqggsdafo4qkmyyt
[root@k8s-master01 gudong]#
[root@k8s-master01 gudong]#openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
b5bfe6c4e3cef6455e33c5de503035c49c59da41c3cdbc504b8e7f92d3d329ea

node节点重新join:

[root@k8s-node01 gudong]# kubeadm join 192.168.31.232:6443 --token ikkd3i.tqggsdafo4qkmyyt \
>     --discovery-token-ca-cert-hash sha256:b5bfe6c4e3cef6455e33c5de503035c49c59da41c3cdbc504b8e7f92d3d329ea
[preflight] Running pre-flight checks
	[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.2. Latest validated version: 18.09
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

### Kubernetes节点加入集群时 JWS 报错解决方案 JWS (JSON Web Signature) 错误通常发生在 Kubernetes 集群中的从节点尝试加入主节点时,由于令牌(Token)或 CA 证书哈希不匹配导致认证失败。以下是针对此问题的详细分析和解决方案。 #### 1. 原因分析 当从节点试图加入 Kubernetes 主节点时,`kubeadm join` 命令会依赖于 `cluster-info ConfigMap` 中存储的签名信息来验证 API Server 的身份。如果未能找到有效的 JWS 签名,则会出现类似于以下错误: ``` Could not find a JWS signature in the cluster-info ConfigMap for token ID “*****” ``` 这种错误的主要原因可能包括但不限于以下几种情况: - **Token 已过期**:默认情况下,Kubernetes Token 的有效期为 24 小时[^3]。 - **Token 不正确**:用于连接的 Token 可能已被删除或从未存在。 - **CA 证书哈希缺失或不匹配**:`--discovery-token-ca-cert-hash` 参数指定的 SHA256 值与实际 CA 证书不符。 --- #### 2. 解决方案 ##### 方法一:重新生成并使用新的 Token 和 CA Hash 可以通过以下命令重新生成一个新的 Token 并获取其对应的 CA Hash。 ```bash # 列出现有的 Tokens kubeadm token list # 如果现有 Token 已过期或者不可用,可以删除它 kubeadm token delete <existing_token> # 创建新 Token,并打印完整的 Join Command kubeadm token create --print-join-command ``` 执行以上命令后,将会返回一条形如以下的结果: ``` kubeadm join 192.168.1.50:6443 --token abcdef.ghijklmnopqrstuvwxyz \ --discovery-token-ca-cert-hash sha256:ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467 ``` 将该命令复制到目标从节点上运行即可完成加入操作[^3]。 > 注意事项:确保 Master 节点上的 `/etc/kubernetes/pki/ca.crt` 文件未被修改;否则需要重新计算 CA Hash。 ##### 方法二:手动计算 Discovery Token CA Cert Hash 如果无法直接获得 `--discovery-token-ca-cert-hash` 的值,也可以通过 OpenSSL 手动计算得出。 ```bash openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der | openssl dgst -sha256 -hex ``` 上述命令会输出类似下面的内容: ``` (stdin)= ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467 ``` 将其作为参数传递给 `kubeadm join` 命令中的 `--discovery-token-ca-cert-hash` 字段[^3]。 --- #### 3. 验证配置有效性 为了进一步确认问题已解决,在成功添加 Worker Node 后可通过以下方式检验状态是否正常。 ```bash kubectl get nodes ``` 预期结果应显示所有节点的状态均为 `Ready`。 --- ### 总结 通过对 Token 生命周期管理以及 CA Certificate Hash 的校验调整,能够有效规避因 JWS 签名校验失败引发的问题。务必保持 Token 新鲜度及时更新,并妥善保存相关密钥材料以防丢失。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值