Kubernetes(K8s)在设置容器运行时(如Docker)时,通常需要选择一个用于隔离容器的 Linux 内核特性,即 cgroups 的驱动。主要的选择是 cgroupfs 和 systemd。
cgroupfs:这是 Docker 的默认设置。每个 Docker 守护进程创建并管理自己的 cgroups,而不依赖于任何其他进程来管理它。如果你的系统中并没有运行 systemd 作为 init 系统,那么你可能会倾向于使用 cgroupfs。
systemd:如果你的系统中正在运行 systemd,那么使用 systemd 作为 cgroups 驱动可能更有意义。在这种情况下,Docker 守护进程将会将 cgroups 委托给 systemd 来管理。这样可以让 systemd 成为系统中唯一的 cgroups 管理器,它可以更好地协调各个服务的资源使用。
在 Kubernetes 中,如果你使用的容器运行时(如 Docker)的 cgroups 驱动被设置为 systemd,但是 Kubelet 还在使用默认的 cgroupfs 作为其 cgroups 驱动,这可能会导致一些问题。因此,如果你在容器运行时中使用了 systemd,那么在 Kubelet 中也应该使用 systemd。
总的来说,选择 cgroupfs 还是 systemd 主要取决于你的系统是否使用 systemd 作为其 init 系统,以及你是否希望让 systemd 管理你的 cgroups。
网友回复