Kubernetes:无法加入远程主节点

Kubernetes:无法加入远程主节点,kubernetes,kubeadm,Kubernetes,Kubeadm,您好,我在远程服务器上面临kubeadm连接问题 我想创建一个多服务器、多节点的Kubernetes集群。 我创建了一个vagrantfile来创建一个主节点和N个worker。 它在一台服务器上工作 主虚拟机是一个桥接虚拟机,使网络上的其他可用虚拟机可以访问它 我选择Calico作为网络供应商 对于主节点,这是我所做的: 使用ansible: 初始化Kubeadm 安装网络提供商 创建join命令 对于工作节点: 我执行join命令以加入正在运行的主机 我在一台硬件服务器上成功创建了集群。 我

您好,我在远程服务器上面临kubeadm连接问题

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

主虚拟机是一个桥接虚拟机,使网络上的其他可用虚拟机可以访问它

我选择Calico作为网络供应商

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

  • 初始化Kubeadm

  • 安装网络提供商

  • 创建join命令

  • 对于工作节点:

  • 我执行join命令以加入正在运行的主机
  • 我在一台硬件服务器上成功创建了集群。 我试图在同一局域网上的另一台服务器上创建常规工作节点,我成功地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服务器的标识:在令牌ID“s1isfw”的群集信息配置映射中找不到JWS签名 要查看此错误的堆栈跟踪,请使用--v=5或更高值执行 “在加入k8s群集时在节点上

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

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

    kubeadm令牌列表

    步骤:

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

  • 在主机上执行:kubeadm token create--print join命令

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

  • 从主节点检查节点。此工作进程现在应该已加入群集

  • 案例2)。如果您看到带有

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

  • 检查主机条目和节点(主节点和辅助节点)之间的ping。 (防火墙也可能导致这种情况。) 在工人身上再次使用此令牌
  • 或者用案例1

    只想再增加一件事:
    不使用--忽略所有飞行前错误


    as节点(master to work)命令稍后将显示错误。在我的环境中,我不使用它。

    请运行
    kubeadm令牌列表
    并检查
    ecqb8f。jffj0hzau45b4ro2
    是否存在于列表中?在主节点上,kubeadm令牌列表为空。在工作节点“”上没有此类文件“”/home/.kube/config“”“”。我应该手动创建令牌吗?是的。在主机上运行
    kubeadm token create
    ,并在join命令中使用它。或者运行
    kubeadm-token-create--print-join命令并使用该命令。非常感谢,一切正常。我将此作为答案发布:)