【问题标题】:Kubernetes Master Worker Node Kubeadm Join issueKubernetes Master Worker 节点 Kubeadm 加入问题
【发布时间】:2019-09-10 01:37:13
【问题描述】:

我正在使用 Kubeadm 在我的笔记本电脑上的 Oracle Virtualbox 上安装 Kubernetes。 一切正常,直到我在 Kuberenes Worker 节点上运行此命令以加入主节点 运行后出现错误

sudo kubeadm join 192.168.56.100:6443 --token 0i2osm.vsp2mk63v1ypeyjf     --discovery-token-ca-cert-hash sha256:18511321fcc4b622628dd1ad2f56dbdd319bf024740d58127818720828cc7bf0

错误

[preflight] Running pre-flight checks
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR DirAvailable--etc-kubernetes-manifests]: /etc/kubernetes/manifests is not empty
        [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
        [ERROR Port-10250]: Port 10250 is in use
        [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

我尝试手动删除文件并再次运行该命令,但它没有解决端口问题。 并且每当我停止在 10250 端口上运行的 kubectl 然后运行命令时,它会给出错误“需要启动 kubectl,当我启动 kubectl 时,它会给出端口 10250 正在使用中的错误”

它是一种鸡和蛋的东西

对我如何解决它有什么看法?

【问题讨论】:

    标签: kubernetes installation virtualbox worker master


    【解决方案1】:

    你应该先试试

     #kubeadm reset 
    

    因为你已经有 kubernetes,所以会出错。

    【讨论】:

    • 你应该删除 iptabales
    • 不需要删除 iptables 尝试 Kubeadm reset 并生成新的令牌和发现证书,它工作了感谢您的帮助!
    【解决方案2】:

    关于kubeadm reset

    1 ) 如描述here:

    The "reset" command executes the following phases:
    
    preflight              Run reset pre-flight checks
    update-cluster-status  Remove this node from the ClusterStatus object.
    remove-etcd-member     Remove a local etcd member.
    cleanup-node           Run cleanup node.
    

    所以我建议先运行preflight 阶段(通过使用--skip-phases 标志),然后再一起执行所有阶段。

    2 ) 当您执行cleanup-node 阶段时,您可以看到正在记录以下步骤:

    .
    .
    
    [reset] Stopping the kubelet service
    
    [reset] Unmounting mounted directories in "/var/lib/kubelet"
    
    [reset] Deleting contents of config directories: [
    /etc/kubernetes/manifests 
    /etc/kubernetes/pki
    ]
    
    [reset] Deleting files: [
    /etc/kubernetes/admin.conf 
    /etc/kubernetes/kubelet.conf 
    /etc/kubernetes/bootstrap-kubelet.conf 
    /etc/kubernetes/controller-manager.conf 
    /etc/kubernetes/scheduler.conf
    ]
    
    .
    .
    

    让我们回顾一下[reset] 条目,看看它们如何解决您提到的 4 个错误:

    A ) 第一个 [reset] 条目将修复 Port 10250 is in use 问题(kubelet 正在侦听此端口)。

    B ) 第四个[reset] 条目将修复/etc/kubernetes/manifests is not empty/etc/kubernetes/kubelet.conf already exists 的两个错误。

    C ) 我们留下了/etc/kubernetes/pki/ca.crt already exists 错误。
    我认为删除/etc/kubernetes/pki 的第三个[reset] 条目应该解决这个问题。
    但是,就我而言,当我以 5 的详细级别运行 kubeadm join(通过附加 --v=5 标志)时,我遇到了以下错误:

    I0929 ... checks.go:432] validating if ...
    [preflight] Some fatal errors occurred:
    [ERROR FileAvailable-etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
    

    所以我不得不手动删除/etc/kubernetes/pki 文件夹,然后kubeadm join 再次成功。

    【讨论】:

    • 感谢您如此详细的解释。有没有办法使用预先存在的 kubelet 配置和其他一切将节点重新加入到它的主节点?或者我们是否需要始终使用 kubeadm reset 来加入它?
    【解决方案3】:

    别跑

    kubeadm init (do not do this)
    

    在加入之前在工作节点上。这仅在您的主节点上运行。这样做可能是您已经拥有这些文件的原因,而您不应该这样做。正如亚辛所说:

    kubeadm reset
    

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 2021-06-07
      • 2019-03-09
      • 2018-08-07
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多