GNU/Linux >> Linux Esercitazione >  >> Linux

docker cambia il driver cgroup in systemd

Una soluzione che non comporta la modifica di unità di sistema o drop-in sarebbe quella di creare (o modificare) il /etc/docker/daemon.json file di configurazione e includere quanto segue:

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

Dopo averlo salvato, riavvia il servizio docker.

sudo systemctl restart docker

Questa soluzione ovviamente è fattibile solo se si desidera applicare questo a livello di sistema.


Poiché ho due file di configurazione, devo aggiungere anche la voce nel secondo file di configurazione -- /etc/systemd/system/docker.service.d/docker-thinpool.conf :

--exec-opt native.cgroupdriver=systemd \

Solo per aggiungere, cgroupfs è il gestore del gruppo di controllo dei docker. Tuttavia, per la maggior parte delle distribuzioni Linux ssytemd è ora il sistema init predefinito e systemd ha una stretta integrazione con i gruppi di controllo Linux e nel sito Kubernetes, consigliano di utilizzare systemd (vedi sotto) poiché l'utilizzo di cgroupfs insieme a systemd sembra non essere ottimale

Quindi è meglio usare systemd quindi per la gestione di cgroup. kubelet è configurato per impostazione predefinita per utilizzare systemd. Quindi è più facile e migliore modificare Docker per utilizzare il driver systemd Cgroup

Una storia di questa sovrapposizione è qui https://lwn.net/Articles/676831/

Nel sito Kubernetes, consigliano di utilizzare systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/

Driver di cgroup Quando systemd viene scelto come sistema init per una distribuzione Linux, il processo init genera e consuma un controlgroup root (cgroup) e agisce come gestore di cgroup. Systemd ha una stretta integrazione con i cgroup e allocherà i cgroup per processo. È possibile configurare il runtime del contenitore e il kubelet su usecgroupfs. L'uso di cgroupfs accanto a systemd significa che ci saranno quindi due diversi gestori di cgroup.

I gruppi di controllo vengono utilizzati per vincolare le risorse allocate ai processi. Un singolo gestore di cgroup semplificherà la visualizzazione di quali risorse vengono allocate e per impostazione predefinita avrà una visualizzazione più coerente delle risorse disponibili e in uso. Quando abbiamo due manager, ci ritroviamo con due visioni di quelle risorse. Abbiamo visto casi nel campo in cui i nodi configurati per utilizzare cgroupfs per kubelet e Docker e systemd per il resto dei processi in esecuzione sul nodo diventano instabili a causa della pressione delle risorse.


Linux
  1. Cambia password

  2. Modificare il timeout del processo di arresto di Systemd nella configurazione di Nixos?

  3. Come modificare il nome host su un server Web cPanel

  4. Aggiornamento di Docker su Amazon Linux AMI

  5. Modificare la directory principale di Docker su Red Hat Linux?

Come eseguire il contenitore Jenkins come servizio Systemd con Docker

Installa ed esegui Jenkins con Systemd e Docker

Esegui il contenitore Docker Almalinux o Rocky Linux 8 con Systemd (systemctl)

Modificare il driver predefinito della stampante di rete?

Come utilizzare Docker Commit per modificare le immagini del contenitore

Cambia fuso orario in Ubuntu 18.04