加入工作节点时无法读取集群 ca 证书

Failed to read cluster ca certificate when joining worker node

我正在尝试按照此 kOS Setup Link 设置多节点 k8s 集群,但是当我尝试将其中一个节点加入主节点时遇到以下错误:

    k0s token create --role=worker
    WARN[2022-01-12 13:55:31] no config file given, using defaults
    Error: failed to read cluster ca certificate from /var/lib/k0s/pki/ca.crt: open 
    /var/lib/k0s/pki/ca.crt: no such file or directory. check if the control plane is 
    initialized on this node

我从控制节点验证了这个文件确实存在,但是:

cd /var/lib/k0s/pki
ls

我是从头开始设置 k8s 的新手,有点不确定我需要修复哪个配置项(以及主节点和工作节点之间的哪个位置?)。 我的研究表明,将新的工作节点加入 Kubernetes 集群时需要一个令牌——这个令牌是从控制节点生成的。它还说 当你 bootstrap 使用 kubeadm 的集群时,会生成一个令牌,该令牌将在 24 小时后过期

当我尝试检查主节点上是否存在令牌时,我得到:

 kubeadm tokens list
-bash: kubeadm: command not found

不过我不确定这是否正确(k0s even bootstrap是否与 kubeadm 同步? ?).

但是使用 k0s CLI 语法我可以看到它们不是主节点上的令牌:

k0s token list
No k0s join tokens found

我的问题:

  1. 我需要为报告丢失的文件做什么。
  2. 这个错误是否(可能)与上面的token问题有关,如果是,我首先需要在主节点端重新生成token。
  3. 我在此 Github Issue 遇到了多个修复程序,但我不确定是否有任何修复程序适用于我的问题。我需要做的最后一件事是在完成集群设置之前中断当前设置。

环境 主节点:Debian 10 Buster 工作节点:Debian 10 Buster

我在 worker 节点上尝试 运行 k0s token create --role=worker 时遇到了与您相同的错误。

你需要运行 this command on the master node:

Next, you need to create a join token that the worker node will use to join the cluster. This token is generated from the control node.

首先你需要在master节点上运行k0s token create --role=worker获取token然后use this token on the worker node:

On the worker node, issue the command below.

k0s worker <login-token> 

所以:

  • 使用 k0s token create --role=worker
  • master 上生成令牌
  • 使用 k0s worker <login-token>
  • worker 上使用此令牌

在我的例子中,我还需要在两个命令之前添加 sudo,所以它们看起来像 sudo k0s token create --role=workersudo k0s worker <login-token>

您写道:

I am unsure however if this is correct ( Is k0s even bootstrapped with kubeadm ?? ).

不,它们是两个不同且独立的解决方案。