k8s / kubeadm:加入集群需要永远

问题描述 投票:5回答:3

我已经设置了我的主节点,我正在尝试加入一个工作节点,如下所示:

kubeadm join 192.168.30.1:6443 --token 3czfua.os565d6l3ggpagw7 --discovery-token-ca-cert-hash sha256:3a94ce61080c71d319dbfe3ce69b555027bfe20f4dbe21a9779fd902421b1a63

但是,该命令将永远挂起,处于以下状态:

[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/

由于这只是一个警告,为什么它实际上失败了?

编辑:我在/var/log/syslog中注意到了以下内容

Mar 29 15:03:15 ubuntu-xenial kubelet[9626]: F0329 15:03:15.353432    9626 server.go:193] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory
Mar 29 15:03:15 ubuntu-xenial systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Mar 29 15:03:15 ubuntu-xenial systemd[1]: kubelet.service: Unit entered failed state.
kubernetes kubeadm
3个回答
1
投票

问题与kubeadm没有安装开箱即用的CNI兼容网络解决方案有关;

因此,如果没有这一步,kubernetes节点/主站就无法建立任何形式的通信;

以下任务解决了该问题:

- name: kubernetes.yml --> Install Flannel
  shell: kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
  become: yes
  environment:
    KUBECONFIG: "/etc/kubernetes/admin.conf"
  when: inventory_hostname in (groups['masters'] | last)

0
投票

我确实在CentOS 7上得到了同样的错误,但在我的情况下,join命令没有问题,所以它确实只是一个警告。

>  [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/ [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' [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.14" ConfigMap in the kube-system namespace

正如官方文档所提到的,有两个常见问题导致init挂起(我猜它也适用于join命令):

kubelet的默认cgroup驱动程序配置与Docker使用的配置不同。检查系统日志文件(例如/ var / log / message)或检查journalctl -u kubelet的输出。如果您看到以下内容:

首先尝试从official documentation的步骤,如果这不起作用,请提供更多信息,以便我们可以根据需要进一步排除故障。


0
投票

我有一堆k8s部署脚本最近破坏了同样的错误消息......看起来docker改变了它的安装。试试这个 -

以前的安装:apt-get install docker-ce

更新安装:apt-get install docker-ce docker-ce-cli containerd.io

© www.soinside.com 2019 - 2024. All rights reserved.