GNU/Linux >> Tutoriels Linux >  >> Linux

docker change le pilote du groupe de contrôle en systemd

Une solution qui n'implique pas l'édition d'unités systemd ou de drop-ins serait de créer (ou d'éditer) le /etc/docker/daemon.json fichier de configuration et d'inclure les éléments suivants :

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

Après l'avoir enregistré, redémarrez votre service docker.

sudo systemctl restart docker

Cette solution n'est évidemment réalisable que si vous souhaitez l'appliquer à l'ensemble du système.


Comme j'ai deux fichiers de configuration, je dois également ajouter l'entrée dans le deuxième fichier de configuration -- /etc/systemd/system/docker.service.d/docker-thinpool.conf :

--exec-opt native.cgroupdriver=systemd \

Juste pour ajouter, cgroupfs est le propre gestionnaire de groupe de contrôle de dockers. Cependant, pour la majorité des distributions Linux, sytemd est maintenant le système d'initialisation par défaut et systemd a une intégration étroite avec les groupes de contrôle Linux et sur le site Kubernetes, ils recommandent d'utiliser systemd (voir ci-dessous) car l'utilisation de cgroupfs avec systemd ne semble pas optimale /P>

Il est donc préférable d'utiliser systemd que pour la gestion des groupes de contrôle. kubelet est configuré par défaut pour utiliser systemd. Il est donc plus facile et préférable de changer Docker pour utiliser le pilote systemd Cgroup

Un historique de ce chevauchement est ici https://lwn.net/Articles/676831/

Sur le site Kubernetes, ils recommandent d'utiliser systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/

Pilotes de groupe de contrôle Lorsque systemd est choisi comme système d'initialisation pour une distribution Linux, le processus d'initialisation génère et utilise un groupe de contrôle racine (groupe de contrôle) et agit comme un gestionnaire de groupe de contrôle. Systemd a une intégration étroite avec les cgroups et allouera des cgroups par processus. Il est possible de configurer votre environnement d'exécution de conteneur et le kubelet pour utiliser cgroupfs. L'utilisation de cgroupfs avec systemd signifie qu'il y aura alors deux gestionnaires de groupe de contrôle différents.

Les groupes de contrôle sont utilisés pour limiter les ressources allouées aux processus. Un gestionnaire de groupe de contrôle unique simplifiera la vue des ressources allouées et aura par défaut une vue plus cohérente des ressources disponibles et en cours d'utilisation. Lorsque nous avons deux gestionnaires, nous nous retrouvons avec deux visions de ces ressources. Nous avons vu des cas sur le terrain où des nœuds configurés pour utiliser cgroupfs pour le kubelet et Docker, et systemd pour le reste des processus exécutés sur le nœud deviennent instables sous la pression des ressources.


Linux
  1. Modifier les mots de passe

  2. Modifier le délai d'expiration du travail d'arrêt Systemd dans la configuration Nixos ?

  3. Docker

  4. Comment changer le fuseau horaire d'un conteneur Docker

  5. Comment changer le chemin du journal d'audit dans MySQL Docker

Comment exécuter Jenkins Container en tant que service Systemd avec Docker

Installer et exécuter Jenkins avec Systemd et Docker

Exécutez le conteneur Almalinux ou Rocky Linux 8 Docker avec Systemd (systemctl)

Changer le pilote par défaut de l'imprimante réseau ?

Comment utiliser Docker Commit pour modifier les images de conteneur

Changer le fuseau horaire dans Ubuntu 18.04