Una solución que no implique la edición de unidades systemd o drop-ins sería crear (o editar) el /etc/docker/daemon.json
archivo de configuración e incluir lo siguiente:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
Después de guardarlo, reinicie su servicio docker.
sudo systemctl restart docker
Obviamente, esta solución solo es factible si desea aplicarla en todo el sistema.
Como tengo dos archivos de configuración, también necesito agregar la entrada en el segundo archivo de configuración -- /etc/systemd/system/docker.service.d/docker-thinpool.conf
:
--exec-opt native.cgroupdriver=systemd \
Solo para agregar, cgroupfs es el administrador del grupo de control propio de los acopladores. Sin embargo, para la mayoría de las distribuciones de Linux, systemd es el sistema de inicio predeterminado ahora y systemd tiene una estrecha integración con los grupos de control de Linux y en el sitio de Kubernetes, recomiendan usar systemd (ver más abajo) ya que usar cgroupfs junto con systemd parece no ser óptimo
Por lo tanto, es mejor usar systemd que para la administración de cgroup. kubelet está configurado de forma predeterminada para usar systemd. Por lo tanto, es más fácil y mejor cambiar Docker para usar el controlador systemd Cgroup
Una historia de esta superposición está aquí https://lwn.net/Articles/676831/
En el sitio de Kubernetes, recomiendan usar systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/
Controladores de cgroup Cuando se elige systemd como sistema de inicio para una distribución de Linux, el proceso de inicio genera y consume un grupo de control raíz (cgroup) y actúa como un administrador de cgroup. Systemd tiene una estrecha integración con cgroups y asignará cgroups por proceso. Es posible configurar el tiempo de ejecución de su contenedor y el kubelet para usar cgroupfs. El uso de cgroupfs junto con systemd significa que habrá dos administradores de cgroup diferentes.
Los grupos de control se utilizan para restringir los recursos que se asignan a los procesos. Un único administrador de cgroup simplificará la vista de los recursos que se están asignando y, de manera predeterminada, tendrá una vista más consistente de los recursos disponibles y en uso. Cuando tenemos dos gerentes, terminamos con dos vistas de esos recursos. Hemos visto casos en el campo donde los nodos que están configurados para usar cgroupfs para kubelet y Docker, y systemd para el resto de los procesos que se ejecutan en el nodo se vuelven inestables bajo la presión de los recursos.