在Kubernetes中解决”expected a 32 byte SHA-256 hash, found 24 bytes”错误

108次阅读
没有评论

问题描述

在使用Kubernetes(K8s)搭建一个3节点集群时,遇到了错误信息:”expected a 32 byte SHA-256 hash, found 24 bytes”。这个错误出现在执行kubeadm join命令时,阻止了节点的加入操作。用户在一开始的配置和安装过程中都已经按照文档进行了设置,但仍然遇到了这个问题。

解决方案

以下是解决这个问题的步骤。在开始之前,请确保你已备份重要数据并理解你的操作可能带来的风险。

步骤 1:检查证书哈希值

首先,我们需要检查集群的证书哈希值,确保其长度为32字节的SHA-256哈希值。如果不正确,我们将重新生成并更新相关的证书。

  1. 在主节点上运行以下命令,获取你之前执行kubeadm init时的证书哈希值:
kubeadm init phase upload-certs --upload-certs
  1. 将返回的输出中的certs字段的值复制下来。

步骤 2:更新节点加入命令

现在我们将更新节点加入命令,使用正确的证书哈希值。

  1. 在工作节点上,运行以下命令,将<CERTS>替换为步骤1中复制的证书哈希值,<CONTROL_PLANE_IP>替换为主节点的IP地址(通常是主节点的IP地址和端口号6443):
sudo kubeadm join <CONTROL_PLANE_IP> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<CERTS>

步骤 3:启用 kubelet 服务

如果你在节点加入过程中遇到了”kubelet service is not enabled”错误,你需要启用kubelet服务。

  1. 在工作节点上运行以下命令,启用kubelet服务:
sudo systemctl enable kubelet.service

步骤 4:验证节点加入

完成上述步骤后,你可以验证节点是否成功加入集群。

  1. 在主节点上运行以下命令,查看已加入的节点:
kubectl get nodes

结论

通过检查证书哈希值并更新节点加入命令,你应该能够成功解决”expected a 32 byte SHA-256 hash, found 24 bytes”错误,并将节点成功加入Kubernetes集群中。如果你在执行这些步骤时遇到任何问题,请确保仔细阅读错误信息以及相应的文档,或者尝试参考其他相关资源进行排查。

正文完