您好,我在远程服务器上遇到kubeadm连接问题。
我想创建一个多服务器,多节点的Kubernetes集群。 我创建了一个vagrantfile来创建一个主节点和N个worker。 它可以在单个服务器上工作。
主VM是桥接Vm,以使其可被网络上的其他可用Vms访问。
我选择Calico作为网络提供商。
对于主节点,这就是我要做的: 使用ansible:
初始化Kubeadm。
安装网络提供商。
创建联接命令。
对于Worker节点:
我成功在一台硬件服务器上创建了集群。 我试图在同一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"
我问是否有任何特定的网络配置来加入远程主节点。
答案 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)。如果您看到上述命令没有输出,那么最好的办法是再次从主服务器生成令牌:
在主节点上执行: kubeadm令牌create --print-join-command
如有必要,复制所有内容和结构,并在工作节点上将其作为命令执行。
从主节点检查节点。该工作人员现在应该已经加入集群。
情况2)。如果看到带有
的输出令牌,TTL,过期,用法,说明,额外组。
或处理案例1。
只想再添加1件事:
请勿使用-ignore-preflight-errors all
作为节点(主节点)命令以后会显示错误。在我的环境中,我不使用它。