Kubernetes:无法加入远程主节点
Kubernetes: unable to join a remote master node
您好,我在远程服务器上遇到 kubeadm 连接问题。
我想创建一个多服务器、多节点的 Kubernetes 集群。
我创建了一个 vagrantfile 来创建一个主节点和 N 个工作节点。
它在单个服务器上工作。
主 VM 是一个桥接 Vm,以使其可供网络上其他可用的 Vms 访问。
我选择 Calico 作为网络提供商。
对于主节点,这就是我所做的:
使用 ansible :
初始化 Kubeadm。
正在安装网络提供程序。
创建加入命令。
对于工作节点:
- 我执行加入命令加入运行 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 再次生成令牌:
在 master 上执行:kubeadm token create --print-join-command
如有必要,复制所有内容和结构,并在工作节点上将其作为命令执行。
检查来自master的节点。该工作人员现在应该已加入集群。
案例2)。如果您看到
的输出
令牌、TTL、到期、用途、描述、额外组。
- 检查节点(主节点和工作节点)之间的主机条目和 ping。
(防火墙也可能导致这种情况。)
再次对工人使用此令牌。
或使用案例 1。
只想再补充 1 件事 :
不要使用 --ignore-preflight-errors all
as nodes(master to work) 命令稍后会显示错误。在我的环境中,我不使用这个。
您好,我在远程服务器上遇到 kubeadm 连接问题。
我想创建一个多服务器、多节点的 Kubernetes 集群。 我创建了一个 vagrantfile 来创建一个主节点和 N 个工作节点。 它在单个服务器上工作。
主 VM 是一个桥接 Vm,以使其可供网络上其他可用的 Vms 访问。
我选择 Calico 作为网络提供商。
对于主节点,这就是我所做的: 使用 ansible :
初始化 Kubeadm。
正在安装网络提供程序。
创建加入命令。
对于工作节点:
- 我执行加入命令加入运行 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 再次生成令牌:
在 master 上执行:kubeadm token create --print-join-command
如有必要,复制所有内容和结构,并在工作节点上将其作为命令执行。
检查来自master的节点。该工作人员现在应该已加入集群。
案例2)。如果您看到
的输出令牌、TTL、到期、用途、描述、额外组。
- 检查节点(主节点和工作节点)之间的主机条目和 ping。 (防火墙也可能导致这种情况。) 再次对工人使用此令牌。
或使用案例 1。
只想再补充 1 件事 :
不要使用 --ignore-preflight-errors all
as nodes(master to work) 命令稍后会显示错误。在我的环境中,我不使用这个。