Chapitre 7. En travaillant avec des conteneurs
7.1. Comprendre les conteneurs Copier lienLien copié sur presse-papiers!
Les unités de base de Red Hat OpenShift Service sur les applications AWS sont appelées conteneurs. Les technologies de conteneurs Linux sont des mécanismes légers pour isoler les processus en cours d’exécution, de sorte qu’ils se limitent à interagir avec seulement leurs ressources désignées.
De nombreuses instances d’application peuvent s’exécuter dans des conteneurs sur un seul hôte sans visibilité sur les processus, les fichiers, le réseau, etc. En règle générale, chaque conteneur fournit un service unique (souvent appelé « micro-service »), tel qu’un serveur Web ou une base de données, bien que les conteneurs puissent être utilisés pour des charges de travail arbitraires.
Le noyau Linux intègre des capacités pour les technologies de conteneurs depuis des années. Le service OpenShift Red Hat sur AWS et Kubernetes ajoute la possibilité d’orchestrer des conteneurs sur des installations multi-hôte.
7.1.1. À propos des conteneurs et de la mémoire du noyau RHEL Copier lienLien copié sur presse-papiers!
En raison du comportement Red Hat Enterprise Linux (RHEL), un conteneur sur un nœud avec une utilisation élevée du CPU peut sembler consommer plus de mémoire que prévu. La consommation de mémoire plus élevée pourrait être causée par le kmem_cache dans le noyau RHEL. Le noyau RHEL crée un kmem_cache pour chaque cgroup. En plus de performances, le kmem_cache contient un cache cpu_cache et un cache de nœud pour tous les nœuds NUMA. Ces caches consomment tous de la mémoire du noyau.
La quantité de mémoire stockée dans ces caches est proportionnelle au nombre de CPU que le système utilise. En conséquence, un plus grand nombre de CPU se traduit par une plus grande quantité de mémoire du noyau étant détenue dans ces caches. Des quantités plus élevées de mémoire du noyau dans ces caches peuvent entraîner Red Hat OpenShift Service sur les conteneurs AWS à dépasser les limites de mémoire configurées, ce qui entraîne la mort du conteneur.
Afin d’éviter de perdre des conteneurs en raison de problèmes de mémoire du noyau, assurez-vous que les conteneurs demandent une mémoire suffisante. La formule suivante permet d’estimer la quantité de mémoire consommée par kmem_cache, où nproc est le nombre d’unités de traitement disponibles qui sont rapportées par la commande nproc. La limite inférieure des demandes de conteneurs devrait être cette valeur plus les exigences de mémoire du conteneur:
$(nproc) X 1/2 MiB
$(nproc) X 1/2 MiB
7.1.2. À propos du moteur du conteneur et du temps d’exécution du conteneur Copier lienLien copié sur presse-papiers!
Le moteur de conteneur est un logiciel qui traite les demandes des utilisateurs, y compris les options de ligne de commande et les tirages d’image. Le moteur de conteneur utilise un runtime de conteneur, également appelé un runtime de conteneur de niveau inférieur, pour exécuter et gérer les composants nécessaires pour déployer et utiliser des conteneurs. Il est probable que vous n’aurez pas besoin d’interagir avec le moteur de conteneur ou le temps d’exécution du conteneur.
Le service OpenShift Red Hat sur la documentation AWS utilise le terme d’exécution du conteneur pour se référer à l’exécution du conteneur de niveau inférieur. D’autres documents peuvent se référer au moteur de conteneur comme le temps d’exécution du conteneur.
Le service OpenShift Red Hat sur AWS utilise CRI-O comme moteur de conteneur et cron ou runC comme temps d’exécution du conteneur. L’exécution du conteneur par défaut est crun.