首页 > 解决方案 > kubeadm init --config 问题

问题描述

我正在尝试使用 kubeadm 初始化一个 kubernetes 集群。我按照此处找到的堆叠控制平面/etcd 节点的说明进行操作。对于容器运行时安装,建议运行时(在我的情况下为 containerd)和 kubelet 使用相同的 cgroup 驱动程序(在我的情况下为 systemd)。

仍然按照说明进行操作,我添加了

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
    ...
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
       SystemdCgroup = true

/etc/containerd/config.toml然后使用重新启动容器sudo systemctl restart containerd

到目前为止一切顺利,一切都按预期工作。然后我到了必须配置 kubelet 使用的 cgroup 驱动程序的部分。它说我必须使用配置文件调用 kubeadm init。类似的东西:sudo kubeadm init --config.yaml。这是我的问题:我发现关于该配置文件应该是什么样子的信息很少。文档说kubeadm config print init-defaults应该打印默认配置,但默认配置与我的设置无关(即,它使用 docker 而不是 containerd)。我在这里找到了一个文件示例,但到目前为止,我还没有设法使其适应我的设置,而且我发现的文档很少。必须有一种比仅仅为了一个属性更改而重写整个配置文件更简单的方法,对吧?为什么我不能打印使用的文字配置文件kubeadm init

标签: kuberneteskubectlkubeadm

解决方案


我的解决方案是使用默认配置(没有 systemd cgroup)重新启动 containerd,然后kubeadm init像往常一样运行。集群启动后,我将配置打印到一个文件中:kubeadm config view. 然后我修改了该文件以添加设置 systemd cgroup 所需的参数。最后,我将 containerd 配置为使用 systemd 并使用新创建的配置文件运行 kubeadm init。一切正常。

警告:该命令kubeadm config view表示“view”命令已被弃用并改为使用kubectl get cm -o yaml -n kube-system kubeadm-config,但该命令的输出不会创建有效的 kubeadm 配置文件,所以我不建议这样做。


推荐阅读