GNU/Linux >> Tutoriales Linux >  >> Linux

Docker cambia el controlador cgroup a systemd

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.


Linux
  1. ¿Cambiar el tiempo de espera del trabajo de detención de Systemd en la configuración de Nixos?

  2. ¿Cómo cambiar de usuario para un montón de archivos de servicio de Systemd?

  3. Cómo configurar OpenCL para GPU en Linux y Docker [Guía completa]

  4. Cómo cambiar la dirección IP predeterminada de Docker Bridge

  5. Actualización de Docker en la AMI de Amazon Linux

Cómo ejecutar Jenkins Container como servicio Systemd con Docker

Instale y ejecute Jenkins con Systemd y Docker

Ejecute el contenedor Docker de Almalinux o Rocky Linux 8 con Systemd (systemctl)

¿Cambiar el controlador predeterminado de la impresora de red?

Cómo usar Docker Commit para cambiar imágenes de contenedores

Cambiar zona horaria en Ubuntu 18.04