Aller au contenu

Chapitre 1 : Installation et Configuration

Tout au long de ce chapitre, vous devez être l'utilisateur root ou pouvoir utiliser sudo pour avoir les privilèges nécessaires.

Installation des référentiels EPEL et OpenZFS

Incus nécessite le dépôt EPEL (Extra Packages for Enterprise Linux), qui est facile à installer avec la commande suivante :

dnf install epel-release -y

Une fois installé, vérifiez qu'il n'y a pas de mises à jour en attente :

dnf upgrade

Si des mises à jour du noyau ont été effectuées pendant le processus de mise à niveau, redémarrez le serveur.

Le dépôt OpenZFS

Installez le dépôt OpenZFS en utilisant la commande suivante :

dnf install https://zfsonlinux.org/epel/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm

Installation de dkms, vim et kernel-devel

Installation de paquets nécessaires :

dnf install dkms vim kernel-devel bash-completion

Installation d'Incus

Vous aurez besoin du référentiel CRB disponible pour certains packages spéciaux et du COPR (Cool Other Package Repo) de Neil Hanlon :

dnf config-manager --enable crb
dnf copr enable neil/incus
dnf install incus incus-tools

Activez et démarrez le service incus  :

systemctl enable incus --now

Relancez le serveur maintenant avant de continuer.

Installation d'OpenZFS

dnf install zfs

Configuration de l'Environnement

L'exécution de nombreux conteneurs nécessite davantage de paramètres que la plupart des paramètres du noyau du serveur. Si nous supposons dès le début que nous utiliserons notre serveur en production, alors nous devons faire ces changements avant pour éviter que des erreurs telles que Too many open files ne se produisent.

Heureusement, peaufiner les paramètres d’Incus n’est pas difficile avec quelques modifications de fichiers et un redémarrage.

Modification de limits.conf

Le premier fichier que vous devez modifier est limits.conf. Ce fichier est autodocumenté. Examinez les explications dans les commentaires du fichier pour comprendre à quoi sert ce fichier. Pour effectuer vos modifications, saisissez :

vi /etc/security/limits.conf

La plus grande partie de ce fichier est constitué de commentaires et, en bas, affiche les paramètres par défaut actuels. Vous devez ajouter les paramètres personnalisés dans l'espace vide au-dessus de la fin du marqueur de fichier (#End of file). La fin du fichier ressemblera à ceci lorsque vous aurez terminé :

# Modifications made for LXD

*               soft    nofile           1048576
*               hard    nofile           1048576
root            soft    nofile           1048576
root            hard    nofile           1048576
*               soft    memlock          unlimited
*               hard    memlock          unlimited

Enregistrez vos modifications et quittez l'éditeur (Shift+:+w+q+! pour vi).

Modification de sysctl.conf avec 90-incus-override.conf

Avec systemd, vous pouvez modifier la configuration globale de votre système et les options du noyau sans modifier le fichier de configuration principal. Au lieu de cela, vous mettrez vos paramètres dans un fichier séparé qui remplacera les paramètres particuliers dont vous avez besoin.

Pour effectuer ces modifications du noyau, vous créerez un fichier appelé 90-incus-override.conf dans le répertoire /etc/sysctl.d. Pour ce faire, tapez ce qui suit :

vi /etc/sysctl.d/90-incus-override.conf

Placez le contenu suivant dans le fichier. Notez que si vous vous demandez comment faire ici, le contenu du fichier est auto-documenté :

## The following changes have been made for LXD ##

# fs.inotify.max_queued_events specifies an upper limit on the number of events that can be queued to the corresponding inotify instance
 - (default is 16384)

fs.inotify.max_queued_events = 1048576

# fs.inotify.max_user_instances This specifies an upper limit on the number of inotify instances that can be created per real user ID -
(default value is 128)

fs.inotify.max_user_instances = 1048576

# fs.inotify.max_user_watches specifies an upper limit on the number of watches that can be created per real user ID - (default is 8192)

fs.inotify.max_user_watches = 1048576

# vm.max_map_count contains the maximum number of memory map areas a process may have. Memory map areas are used as a side-effect of cal
ling malloc, directly by mmap and mprotect, and also when loading shared libraries - (default is 65530)

vm.max_map_count = 262144

# kernel.dmesg_restrict denies container access to the messages in the kernel ring buffer. Please note that this also will deny access t
o non-root users on the host system - (default is 0)

kernel.dmesg_restrict = 1

# This is the maximum number of entries in ARP table (IPv4). You should increase this if you create over 1024 containers.

net.ipv4.neigh.default.gc_thresh3 = 8192

# This is the maximum number of entries in ARP table (IPv6). You should increase this if you plan to create over 1024 containers.Not nee
ded if not using IPv6, but...

net.ipv6.neigh.default.gc_thresh3 = 8192

# This is a limit on the size of eBPF JIT allocations which is usually set to PAGE_SIZE * 40000. Set this to 1000000000 if you are running Rocky Linux 9.x

net.core.bpf_jit_limit = 1000000000

# This is the maximum number of keys a non-root user can use, should be higher than the number of containers

kernel.keys.maxkeys = 2000

# This is the maximum size of the keyring non-root users can use

kernel.keys.maxbytes = 2000000

# This is the maximum number of concurrent async I/O operations. You might need to increase it further if you have a lot of workloads th
at use the AIO subsystem (e.g. MySQL)

fs.aio-max-nr = 524288

Enregistrez vos modifications et quittez l'éditeur.

À ce stade, vous devriez redémarrer le serveur.

Vérification des variables dans sysctl.conf

Une fois le redémarrage terminé, reconnectez-vous sur le serveur. Vous devoez vérifier que le fichier de remplacement a effectivement fait le travail.

Ce n'est pas difficile à faire. Il n'est pas nécessaire de vérifier tous les paramètres, sauf si vous le souhaitez, mais en vérifier quelques-uns permettra de s'assurer que les paramètres sont enregistrés. Pour ce faire, utilisez la commande sysctl :

sysctl net.core.bpf_jit_limit

Pour obtenir la ligne suivante :

net.core.bpf_jit_limit = 1000000000 

Faites la même chose avec quelques autres paramètres dans le fichier de substitution pour vérifier que des modifications ont été apportées.

Author: Steven Spencer

Contributors: Ezequiel Bruni, Ganna Zhyrnova