amazon-ec2 - 无法使用 kubeadm 在 Kubernetes v1.15 中设置外部 etcd 集群
问题描述
我正在尝试使用多主和外部 etcd 集群设置 Kubernetes 集群。按照kubernetes.io中所述的这些步骤进行操作。执行第 7 步后,我能够在 /etc/kubernetes/manifests 文件夹中的所有 3 台主机中创建静态清单 pod 文件。
之后,当我执行命令“ sudo kubeadmin init ”时,由于 kubelet 错误,初始化失败。还验证了 journalctl 日志,错误表明 cgroup 驱动程序配置错误,类似于此SO 链接。
我按照上面的 SO 链接进行了尝试,但无法解决。
请帮我解决这个问题。
对于 docker、kubeadm、kubectl 和 kubelet 的安装,我只关注 kubernetes.io 站点。
环境:
云:AWS
EC2 实例操作系统:Ubuntu 18.04
码头工人版本:18.09.7
谢谢
解决方案
在搜索了几个链接并做了一些跟踪之后,我能够解决这个问题。
如 Container runtime setup中所述,Docker cgroup 驱动程序是 systemd。但是 Kubelet 的默认 cgroup 驱动程序是 cgroupfs。因此,由于 Kubelet 单独无法自动识别 cgroup 驱动程序(如kubernetes.io文档中所述),我们必须在运行 Kubelet 时在外部提供 cgroup-driver,如下所示:
cat << EOF > /etc/systemd/system/kubelet.service.d/20-etcd-service-manager.conf
[服务]
执行开始=
ExecStart=/usr/bin/kubelet --cgroup-driver=systemd --address=127.0.0.1 --pod->manifest-path=/etc/kubernetes/manifests
重启=总是
EOF
systemctl 守护进程重载
systemctl 重启 kubelet
此外,无需运行 sudo kubeadm init,因为我们为 Kubelet 提供了 --pod-manifest-path,它将 etcd 作为静态 POD 运行。
为了调试,可以使用以下命令检查 Kubelet 的日志
journalctl -u kubelet -r
希望能帮助到你。谢谢。
推荐阅读
- postgresql - 如何在 search_path 中设置前缀用户模式?
- java - 如果在检查使用 hashmap 解决 Leetcode 二和的解决方案之前执行 map.put,为什么会失败?
- angular - Viewchild 使用多个选择器获取元素引用
- javascript - 想要 3 个按钮,第一个用于左旋转,第二个用于图像右旋转,3 个用于停止
- c++ - 调用方法时的 C++ Cout。不知道我做错了什么
- swift - 从 Swift 中的另一个类声明 AppDelegate 推送通知委托?
- reactjs - Font Awesome 图标不会出现在 DOM 中
- javascript - 以不可变的方式更新子组件中父级的状态
- html - 如何将 2 列 div 中的标题和无序列表与 css 对齐
- google-sheets - 在行之间连接具有相同字符的列