【问题标题】:How to join worker node in existing cluster?如何加入现有集群中的工作节点?
【发布时间】:2019-10-22 22:26:51
【问题描述】:

我在加入现有集群中的工作节点时遇到了一些问题。 请在下面找到我的方案的详细信息。
我已经创建了一个具有 4 个 master 和 3 个 worker 的 HA 集群。
我删除了 1 个主节点。
删除的节点现在不是集群的一部分,并且重置成功。 现在将移除的节点作为工作节点加入现有集群中。

我在命令下面开火

kubeadm join --token giify2.4i6n2jmc7v50c8st 192.168.230.207:6443 --discovery-token-ca-cert-hash sha256:dd431e6e19db45672add3ab0f0b711da29f1894231dbeb10d823ad833b2f6e1b

在上述命令中 - 192.168.230.207 是集群 IP

上述命令的结果

[preflight] Running pre-flight checks
    [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
    [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/
    [WARNING FileExisting-tc]: tc not found in system path
    [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Get https://192.168.230.206:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config: dial tcp 192.168.230.206:6443: connect: connection refused

已经尝试过的步骤

  1. 使用 kubeadm 补丁修改了这个文件(kubectl -n kube-system get cm kubeadm-config -o yaml)并删除了已删除节点的引用(“192.168.230.206”)

  2. 我们正在使用外部 etcd,因此检查了成员列表以确认删除的节点现在不是 etcd 的一部分。在命令etcdctl --endpoints=https://cluster-ip --ca-file=/etc/etcd/pki/ca.pem --cert-file=/etc/etcd/pki/client.pem --key-file=/etc/etcd/pki/client-key.pem member list

  3. 下触发

由于我无法加入此节点,有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: kubernetes kubeadm kubelet


    【解决方案1】:

    除了@P Ekambaram 的回答,我假设您可能已经完全处理了之前kubeadm join 设置中的所有冗余数据。

    1. 通过工作节点上的kubeadm 命令删除集群条目:kubeadm reset

    2. 擦除工作节点上的所有冗余数据:rm -rf /etc/kubernetes; rm -rf ~/.kube;

    3. 尝试重新加入工作节点。

    【讨论】:

      【解决方案2】:

      依次使用这些说明来完全删除工作节点上的所有旧安装.....

      kubeadm reset
      
      systemctl stop kubelet
      
      systemctl stop docker
      
      rm -rf /var/lib/cni/
      
      rm -rf /var/lib/kubelet/*
      
      rm -rf /etc/cni/
      
      ifconfig cni0 down
      
      ifconfig flannel.1 down
      
      ifconfig docker0 down
      
      ip link delete cni0
      
      ip link delete flannel.1
      
      systemctl start docker.service
      
      yum remove kubeadm kubectl kubelet kubernetes-cni kube*
      
      yum autoremove
      
      rm -rf ~/.kube
      

      然后使用重新安装

      yum install -y kubelet kubeadm kubectl
      
      reboot
      
      systemctl start docker && systemctl enable docker
      systemctl start kubelet && systemctl enable kubelet
      

      然后使用 kubeadm join 命令

      【讨论】:

      • 请解释为什么您希望这会有所帮助。
      • 它们有助于消除以前安装的足迹。
      【解决方案3】:

      修复这些问题并运行 join 命令

      1. docker 服务未启用,请运行 'systemctl enable docker.service'

      2. 检测到“cgroupfs”作为 Docker cgroup 驱动程序。推荐的驱动程序是“systemd”。

      3. kubelet 服务未启用,请运行 'systemctl enable kubelet.service

      【讨论】:

      • 我已经尝试了所有这些步骤,但对我没有用。看起来一些配置已保留在活动主节点中,同时删除另一个主节点,但除了我在上面详细信息中提到的配置映射之外,我无法找到那些东西。
      • 你能在woker节点上运行docker和kubelet吗?
      • 是的,两者都在运行。由于 RestartSec 属性设置为 10 秒,kubelet 服务会在 10 秒后自动重启。我将其添加为工作节点,而不是加入命令重定向到此 IP 192.168.230.206 并寻找 kube 配置。
      • 为什么要重启kubelet?它不应该每 10 秒重新启动一次
      • 更改了配置但没有工作,现在 kubelet 仅在失败时启动。
      【解决方案4】:

      kubeadm join 尝试访问 192.168.230.206,而新 IP 为 192.168.230.207。

      除了在 cm kubeadm-config 中进行更改外,您还可以在此 configmap 中更改您的集群 IP 地址(cluster.server)

      kubectl edit cm -n kube-public cluster-info
      

      【讨论】:

        猜你喜欢
        • 2021-03-19
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2023-04-05
        • 2022-11-11
        • 1970-01-01
        相关资源
        最近更新 更多