Kubernetes:无法加入远程主节点

Kubernetes: unable to join a remote master node

您好,我在远程服务器上遇到 kubeadm 连接问题。

我想创建一个多服务器、多节点的 Kubernetes 集群。 我创建了一个 vagrantfile 来创建一个主节点和 N 个工作节点。 它在单个服务器上工作。

主 VM 是一个桥接 Vm,以使其可供网络上其他可用的 Vms 访问。

我选择 Calico 作为网络提供商。

对于主节点,这就是我所做的: 使用 ansible :

  1. 初始化 Kubeadm。

  2. 正在安装网络提供程序。

  3. 创建加入命令。

对于工作节点:

  1. 我执行加入命令加入运行 master

我在一台硬件服务器上成功创建了集群。 我正在尝试在同一 LAN 上的另一台服务器上创建常规工作节点,我成功地 ping 到主节点。

使用生成的命令加入主节点。

kubeadm join 192.168.2.50:6443 --token ecqb8f.jffj0hzau45b4ro2   
--ignore-preflight-errors all  
--discovery-token-ca-cert-hash 
sha256:94a0144fe419cfb0cb70b868cd43pbd7a7bf45432b3e586713b995b111bf134b

但是它显示了这个错误:

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 "ecqb8f"

请问是否有特定的网络配置加入远程主节点

令牌似乎已过期或已删除。您可以通过 运行:

手动创建令牌
kubeadm token create --print-join-command

将输出用作连接命令。

如果您看到输出为: “ 错误执行阶段预检:无法验证 API 服务器的身份:在集群信息 ConfigMap 中找不到令牌 ID“s1isfw”的 JWS 签名 要查看此错误的堆栈跟踪,请使用 --v=5 或更高版本执行 " 加入 k8s 集群时在节点上。

原因: 当令牌过期时会出现此问题。默认情况下,令牌的 TTL 为 23 小时,从它们生成的时间开始,无论是在 kubeadm init 完成时还是单独生成。

在这种情况下,您可以首先检查是否可以通过 master 上的命令检索您用于将 worker 加入 master 的令牌:

kubeadm 令牌列表

步骤

案例一)。如果您看到上述命令没有输出,那么最好的办法是从 master 再次生成令牌:

  1. 在 master 上执行:kubeadm token create --print-join-command

  2. 如有必要,复制所有内容和结构,并在工作节点上将其作为命令执行。

  3. 检查来自master的节点。该工作人员现在应该已加入集群。

案例2)。如果您看到

的输出

令牌、TTL、到期、用途、描述、额外组。

  1. 检查节点(主节点和工作节点)之间的主机条目和 ping。 (防火墙也可能导致这种情况。) 再次对工人使用此令牌。

或使用案例 1。

只想再补充 1 件事 :
不要使用 --ignore-preflight-errors all

as nodes(master to work) 命令稍后会显示错误。在我的环境中,我不使用这个。