如何在具有无盘工作节点的 kubernetes 集群中安全地挂载 NFS /var/lib/kubelet?
How can I safely NFS mount /var/lib/kubelet in a kubernetes cluster with diskless worker nodes?
背景:
我有一个裸机 Kubernetes 集群。主节点是有磁盘的,但是所有工作节点都是无磁盘的,并且 PXE 从提供其 OS 映像和非易失性 NFS 安装点的机器启动。
我们很早就发现我们需要某种非易失性存储,以便无盘节点可以存储它们的配置、kubernetes 秘密、SSL 密钥等...如果没有非易失性存储,节点将拥有每次重启都会被删除并重新加入集群,这显然很痛苦。
因此我们为 /etc/kubernetes 和 /var/lib/kubelet 创建了 NFS 挂载分区,以便节点可以记住它们是谁,并在重启后重新加入集群。
问题:
但是,我们 运行 遇到了 kubeadm 的问题:它 unmounts/remounts /var/lib/kubelet 每当你 运行 kubeadm 加入。这会导致 kubelet 呕吐和死亡,因为它找不到合适的设备。具体错误为:
node6 kubelet: F0113 18:08:55.196706 210949 kubelet.go:1347] Failed to start ContainerManager failed to get rootfs info: failed to get device for dir "/var/lib/kubelet": could not find dev
ice with major: 0, minor: 46 in cached partitions map
如果我们在 运行ning kubeadm join 之前卸载 /var/lib/kubelet 的 NFS 挂载,它工作得很好,但让我们回到原来的问题:无盘节点将无法在重启后继续存在并且自动重新加入集群。
我们试图通过更改 kubelet 的 k8s root 来解决这个问题,但它仍然会导致 kubelet 对设备感到困惑的相同崩溃。
所以我的问题是:
如何在我的无盘工作节点上正确设置 /var/lib/kubelet 的 NFS 挂载点,或以其他方式配置 kubelet,以便即使在 kubeadm mounts/unmounts 那个点我不要崩溃,kubeadm 的设置文件是非易失性的?
这是一个已知问题,但幸运的是,它在几天前就已修复 - https://github.com/google/cadvisor/pull/2787。
这还没有被剪辑成一个版本。虽然这可能会变成 1.20.x,但对以前的版本不太确定。如果需要,可能想在 https://github.com/kubernetes/kubernetes/issues/98009 请求对问题的反向移植。
背景:
我有一个裸机 Kubernetes 集群。主节点是有磁盘的,但是所有工作节点都是无磁盘的,并且 PXE 从提供其 OS 映像和非易失性 NFS 安装点的机器启动。
我们很早就发现我们需要某种非易失性存储,以便无盘节点可以存储它们的配置、kubernetes 秘密、SSL 密钥等...如果没有非易失性存储,节点将拥有每次重启都会被删除并重新加入集群,这显然很痛苦。
因此我们为 /etc/kubernetes 和 /var/lib/kubelet 创建了 NFS 挂载分区,以便节点可以记住它们是谁,并在重启后重新加入集群。
问题:
但是,我们 运行 遇到了 kubeadm 的问题:它 unmounts/remounts /var/lib/kubelet 每当你 运行 kubeadm 加入。这会导致 kubelet 呕吐和死亡,因为它找不到合适的设备。具体错误为:
node6 kubelet: F0113 18:08:55.196706 210949 kubelet.go:1347] Failed to start ContainerManager failed to get rootfs info: failed to get device for dir "/var/lib/kubelet": could not find dev
ice with major: 0, minor: 46 in cached partitions map
如果我们在 运行ning kubeadm join 之前卸载 /var/lib/kubelet 的 NFS 挂载,它工作得很好,但让我们回到原来的问题:无盘节点将无法在重启后继续存在并且自动重新加入集群。
我们试图通过更改 kubelet 的 k8s root 来解决这个问题,但它仍然会导致 kubelet 对设备感到困惑的相同崩溃。
所以我的问题是:
如何在我的无盘工作节点上正确设置 /var/lib/kubelet 的 NFS 挂载点,或以其他方式配置 kubelet,以便即使在 kubeadm mounts/unmounts 那个点我不要崩溃,kubeadm 的设置文件是非易失性的?
这是一个已知问题,但幸运的是,它在几天前就已修复 - https://github.com/google/cadvisor/pull/2787。
这还没有被剪辑成一个版本。虽然这可能会变成 1.20.x,但对以前的版本不太确定。如果需要,可能想在 https://github.com/kubernetes/kubernetes/issues/98009 请求对问题的反向移植。