Lorsque les utilisateurs déploient plusieurs conteneurs LXD sur un seul serveur, la gestion des ressources devient une préoccupation majeure. L’application de limites sur l’utilisation des ressources permet d’assurer un fonctionnement optimal et équitable des conteneurs, surtout en cas de forte utilisation ou d’incident. Voici comment vous pouvez contrôler les ressources allouées à chaque conteneur.
Pourquoi établir des limites sur les ressources des conteneurs LXD ?
La mise en place de limites sur l’utilisation des ressources d’un conteneur peut être bénéfique dans divers scénarios. Par exemple, dans le cadre d’un hébergement web, il peut être nécessaire de séparer les ressources de chaque site pour éviter qu’un pic de trafic affecte les autres. De plus, dans le contexte de la vente de services, il est possible d’offrir différents niveaux de ressources à des clients avec des paquets tarifaires variés. Des interruptions potentielles dues à une attaque ou un bug peuvent également être atténuées par de telles limites. En résumé, le contrôle des ressources contribue à maintenir la stabilité et à prévenir les problèmes sur l’ensemble du système.
Comment limiter les ressources qu’un conteneur LXD peut utiliser
La gestion des ressources d’un conteneur se fait via des commandes LXD spécifiant les limites appropriées. Voici un aperçu détaillé des principales ressources que vous pouvez gérer :
Limitation de la mémoire
Pour restreindre la mémoire qu’un conteneur peut utiliser, vous devez exécuter la commande suivante, en substituant nom_conteneur
par le nom du conteneur ciblé :
lxc config set nom_conteneur limits.memory 100MB
Pour modifier les unités en gigaoctets, remplacez MB
par GB
.
Contrôle du processeur
Pour gérer l’affectation des cœurs du processeur, utilisez la commande suivante :
lxc config set nom_conteneur limits.cpu 2
À partir de là, vous pouvez également « épingler » le conteneur à des cœurs spécifiques en utilisant :
lxc config set nom_conteneur limits.cpu 0-0
Pour une gestion du temps CPU, utilisez :
lxc config set nom_conteneur limits.cpu.allowance 10ms/100ms
Cette commande limite le conteneur à 10 millisecondes de temps CPU sur une période de 100 millisecondes.
Gestion de l’espace disque
Avant de limiter l’espace disque, assurez-vous d’ajouter un périphérique de disque racine à votre conteneur. Cette action peut être réalisée avec :
lxc config device add nom_conteneur root disk pool=default path=/
Après cela, pour restreindre l’espace disque à 7 Go, par exemple, vous pouvez exécuter :
lxc config device set nom_conteneur root size 7GB
Notez que les limitations d’E/S ne sont pas encore disponibles.
Restrictions sur l’utilisation du réseau
Pour définir des limites sur la bande passante, vous devez d’abord ajouter un périphérique réseau virtuel :
lxc config device add nom_conteneur eth0 nic name=eth0 nictype=bridged parent=lxdbr0
Pour restreindre la bande passante entrante, utilisez :
lxc config device set nom_conteneur eth0 limits.ingress 1Mbit
Pour la bande passante sortante, appliquer :
lxc config device set nom_conteneur eth0 limits.egress 1Mbit
Veillez à multiplier par 8 si vous souhaitez exprimer les limites en mégaoctets (Mo) au lieu de mégabits (Mbit).
FAQ
Quelles ressources puis-je limiter pour un conteneur LXD ?
Vous pouvez limiter la mémoire, le processeur, l’espace disque et la bande passante réseau d’un conteneur LXD.
Comment puis-je vérifier les ressources actuellement allouées à un conteneur ?
Utilisez la commande lxc config show nom_conteneur
pour afficher les configurations en cours, y compris les limites de ressources.
Est-il possible de modifier les limites d’un conteneur en cours d’exécution ?
Oui, vous pouvez modifier les limites des ressources d’un conteneur même lorsqu’il est en cours d’exécution, sans avoir besoin de le redémarrer.