无法使用kubeadm在Kubernetes v1.15中设置外部etcd集群

时间:2019-07-06 10:56:12

标签: amazon-ec2 kubernetes high-availability kubeadm etcd

我正在尝试使用多个master和外部etcd集群设置Kubernetes集群。按照kubernetes.io中所述的步骤进行操作。执行步骤7之后,我能够在/ etc / kubernetes / manifests文件夹中的所有3台主机中创建静态清单pod文件。

在那之后,当我执行命令' sudo kubeadmin init '时,由于kubelet错误,初始化失败。同样验证了journalctl日志,该错误表明cgroup驱动程序配置错误,类似于此SO link

我尝试了上述SO链接中所述的内容,但无法解决。

请帮助我解决此问题。

对于docker,kubeadm,kubectl和kubelet的安装,我仅关注kubernetes.io网站。

环境:

云:AWS

EC2实例操作系统:Ubuntu 18.04

Docker版本:18.09.7

谢谢

1 个答案:

答案 0 :(得分:1)

在搜索了很少的链接并进行了一些跟踪之后,我能够解决此问题。

如容器运行时setup中所给,Docker cgroup驱动程序是系统化的。但是Kubelet的默认cgroup驱动程序是cgroupfs。因此,由于仅Kubelet本身无法自动识别cgroup驱动程序(如kubernetes.io文档中所述),我们必须在运行Kubelet时从外部提供cgroup-driver,如下所示:

  

cat << EOF> /etc/systemd/system/kubelet.service.d/20-etcd-service-manager.conf

     

[服务]

     

ExecStart =

     

ExecStart = / usr / bin / kubelet -cgroup-driver = systemd --address = 127.0.0.1 --pod-> manifest-path = / etc / kubernetes / manifests

     

Restart =总是

     

EOF

     

systemctl守护程序重新加载

     

systemctl重新启动kubelet

此外,无需运行sudo kubeadm init,因为我们为Kubelet提供了--pod-manifest-path,它将etcd作为静态POD运行。

要进行调试,可以使用以下命令检查Kubelet的日志

  

journalctl -u kubelet -r

希望有帮助。谢谢。