Kubernetes:无法加入远程主节点

时间:2020-04-21 20:02:18

标签: kubernetes kubeadm

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

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

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

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

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

  1. 初始化Kubeadm。

  2. 安装网络提供商。

  3. 创建联接命令。

对于Worker节点:

  1. 我执行join命令来加入正在运行的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"

我问是否有任何特定的网络配置来加入远程主节点。

2 个答案:

答案 0 :(得分:10)

令牌似乎已过期或已删除。您可以通过运行以下命令手动创建令牌:

kubeadm token create --print-join-command

将输出用作联接命令。

答案 1 :(得分:2)

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

原因: 当令牌过期时,会出现此问题。自令牌生成以来,令牌的TTL默认为23小时,无论是在完成kubeadm初始化时还是单独生成时。

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

kubeadm令牌列表

步骤

情况1)。如果您看到上述命令没有输出,那么最好的办法是再次从主服务器生成令牌:

  1. 在主节点上执行: kubeadm令牌create --print-join-command

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

  3. 从主节点检查节点。该工作人员现在应该已经加入集群。

情况2)。如果看到带有

的输出

令牌,TTL,过期,用法,说明,额外组。

  1. 检查主机条目并在节点(主节点和工作节点)之间执行ping操作。 (防火墙也可能导致此情况。) 在工作人员上再次使用此令牌。

或处理案例1。

只想再添加1件事:
请勿使用-ignore-preflight-errors all

作为节点(主节点)命令以后会显示错误。在我的环境中,我不使用它。