Activation des groupes v2 sur les noeuds de travail OL8 à l'aide d'images personnalisées

Découvrez comment activer cgroups v2 sur les noeuds de travail qui exécutent Oracle Linux 8 (OL8) dans les grappes créées avec le moteur Kubernetes (OKE), à l'aide d'images personnalisées.

Note

Dans les images OKE OL8 dont le numéro de version est 1367 ou supérieur, cgroups v2 est activé par défaut. Toutefois, dans les images OKE OL8 dont le nombre de versions est inférieur à 1367 (et dans les images de plate-forme OL8), les cgroups v1 sont activés par défaut. Cette rubrique décrit comment activer les cgroups v2 dans le noyau Linux des instances hébergeant des noeuds de travail qui utilisent des images OKE OL8 dont le nombre de versions est inférieur à 1367 ou qui utilisent des images de plate-forme OL8.

Les groupes de contrôle (cgroups) sont une fonctionnalité du noyau Linux qui fournit un mécanisme pour gérer et contrôler l'allocation des ressources pour les processus ou les groupes de processus. La fonctionnalité cgroups permet aux administrateurs système et aux développeurs d'allouer et de limiter diverses ressources système (telles que CPU, mémoire, E/S, bande passante réseau) à des processus ou à des ensembles de processus spécifiques. Cgroups offre un moyen puissant et flexible de gérer l'utilisation des ressources, en veillant à ce que les processus reçoivent les ressources nécessaires tout en les empêchant de consommer des quantités excessives et d'avoir une incidence sur les performances d'autres processus ou du système dans son ensemble. En créant et en organisant des processus dans des groupes de contrôle, les administrateurs peuvent appliquer des contraintes de ressources, hiérarchiser les tâches et maintenir la stabilité du système.

Oracle Linux fournit deux types de groupe de contrôle :

  • Groupes de contrôle version 1 (cgroups v1) : Ces groupes fournissent une hiérarchie de contrôleur par ressource. Chaque ressource, telle que la CPU, la mémoire, les E/S, etc., possède sa propre hiérarchie de groupes de contrôle. Un inconvénient de cgroups v1 est la difficulté de coordonner l'utilisation des ressources entre les groupes qui peuvent appartenir à différentes hiérarchies de processus.
  • Groupes de contrôle version 2 (cgroups v2) : Ces groupes fournissent une hiérarchie de groupe de contrôle unique sur laquelle tous les contrôleurs de ressource sont montés. Dans cette hiérarchie, vous pouvez coordonner l'utilisation des ressources entre différents contrôleurs de ressources.

Pour plus d'informations sur les groupes de contrôle et Oracle Linux, voir Gestion des ressources à l'aide de groupes de contrôle dans la documentation sur Oracle Linux.

Les cgroups v1 et v2 sont tous deux présents dans Oracle Linux 8 (et les versions ultérieures).

Dans les images OKE OL8 dont le numéro de version est 1367 ou supérieur, cgroups v2 est activé par défaut. Dans les images OKE OL8 dont le nombre de versions est inférieur à 1367 (et dans les images de plate-forme OL8), cgroups v1 est activé par défaut. Par conséquent, lorsque vous spécifiez une image OKE OL8 avec un numéro de version inférieur à 1367 (ou une image de plate-forme OL8) pour un groupe de noeuds, cgroups v1 est activé par défaut dans les noyaux Linux des instances de calcul hébergeant les noeuds du groupe de noeuds.

Toutefois, vous pouvez activer cgroups v2 lors de l'utilisation d'images OKE OL8 dont le nombre de versions est inférieur à 1367 (et d'images de plate-forme OL8).

À un niveau élevé, le processus d'activation de cgroups v2 est le suivant :

Étape 1 : Créez une instance de calcul exécutant l'image OL8 requise et activez les cgroups v2

Dans cette étape, vous utilisez le service de calcul pour créer une instance de calcul qui exécute la version OL8 voulue sur les noeuds de travail de la grappe Kubernetes.

  1. Décidez quelle version de OL8 (et si vous allez sélectionner une image OKE, quelle version de Kubernetes) vous voulez sur les noeuds de travail.

    Oracle fournit un certain nombre d'images OKE OL8 et d'images de plate-forme différentes.

  2. Suivez les instructions sous Création d'une instance dans la documentation du service de calcul pour créer une nouvelle instance de calcul et sélectionnez une image de plate-forme appropriée (en sélectionnant une image de plate-forme ou en spécifiant l'OCID d'une image OKE).

    Il s'agit de l'instance de calcul que vous utiliserez comme base d'une nouvelle image personnalisée.

Étape 2 : Activer cgroups v2 sur l'instance de calcul

Dans cette étape, vous activez les cgroups v2 sur l'instance de calcul que vous avez créée à l'étape précédente. Les instructions fournies ici sont un sommaire pratique de l'activation de cgroups v2 dans la documentation sur OL8.

  1. Dans une fenêtre de terminal, connectez-vous à l'instance de calcul et configurez toutes les entrées de démarrage du noyau pour monter les cgroups v2 par défaut, en entrant :
    sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
  2. Redémarrez l'instance en entrant :
    sudo reboot
  3. Vérifiez que cgroups v2 est maintenant monté, en entrant :
    sudo mount -l | grep cgroup
  4. Facultativement, vérifiez le contenu du répertoire /sys/fs/cgroup (groupe de contrôle racine) en entrant :
    ls -l /sys/fs/cgroup/

    Pour les cgroups v2, les fichiers du répertoire doivent avoir des préfixes au début de leurs noms de fichier (tels que cgroup.*, cpu.*, memory.*).

Étape 3 : Créez une image personnalisée basée sur l'instance de calcul où cgroups v2 est activé

À cette étape, vous utilisez le service de calcul pour créer une image personnalisée à partir de l'instance de calcul que vous avez activée pour les cgroups v2 à l'étape précédente.

  1. Arrêtez l'instance que vous avez activée pour les cgroups v2, en entrant :
    sudo shutdown -h now
  2. Suivez les instructions sous Gestion des images personnalisées dans la documentation du service de calcul pour créer une image personnalisée basée sur l'instance de calcul.
  3. Notez l'OCID de l'image personnalisée que vous avez créée.

Étape 4 : Ajouter des noeuds de travail exécutant OL8 avec cgroups v2 activés dans une grappe

Dans cette étape, vous utilisez l'image personnalisée que vous avez créée à l'étape précédente pour ajouter des noeuds de travail exécutant OL8 avec cgroups v2 activés dans une grappe Kubernetes.

Notez qu'il existe différentes instructions à suivre, selon que vous voulez activer cgroups v2 sur les noeuds gérés ou sur les noeuds autogérés. Pour les noeuds gérés, vous définissez un groupe de noeuds gérés. Pour les noeuds autogérés, vous ajoutez des instances de calcul en tant que noeuds de travail.

Notez que vous devez utiliser l'interface de ligne de commande pour créer des noeuds gérés basés sur des images personnalisées.

Ajout de noeuds gérés exécutant OL8 avec cgroups v2 activé

Pour ajouter des noeuds gérés exécutant OL8 avec cgroups v2 activés à une grappe existante :

  1. Ouvrez une invite de commande et utilisez la commande oci ce node-pool create pour créer un nouveau groupe de noeuds.
  2. En plus des paramètres obligatoires requis par la commande, incluez le paramètre --node-image-id et spécifiez l'OCID de l'image personnalisée que vous avez créée à l'étape 3 : Créer une image personnalisée basée sur l'instance de calcul où cgroups v2 est activé.

    Par exemple, vous pouvez entrer la commande suivante :

    oci ce node-pool create \
    --cluster-id ocid1.cluster.oc1.iad.aaaa______m4w \
    --name my-nodepool \
    --node-image-id ocid1.image.oc1.iad.aaaa______zpq \
    --compartment-id ocid1.tenancy.oc1..aaa______q4a \
    --kubernetes-version v1.29.1 \
    --node-shape VM.Standard2.1 \
    --placement-configs "[{\"availabilityDomain\":\"PKGK:US-ASHBURN-AD-1\", \"subnetId\":\"ocid1.subnet.oc1.iad.aaaa______kfa\"}]" \
    --size 3 \
    --region us-ashburn-1

Ajout de noeuds autogérés exécutant OL8 avec cgroups v2 activé

Avant de créer un noeud autogéré :

Utilisation de la console

  1. Créez une instance de calcul pour héberger le noeud autogéré :
    1. Ouvrez le menu de navigation et sélectionnez Calcul. Sous Calcul, sélectionnez Instances.
    2. Pour créer une nouvelle instance de calcul, suivez les instructions de la documentation du service de calcul. Notez que des politiques appropriées doivent exister pour permettre à la nouvelle instance de calcul de se joindre à la grappe améliorée. Voir Création d'un groupe dynamique et d'une politique pour les noeuds autogérés.
    3. Dans la section Image et forme, sélectionnez Modifier l'image.
    4. Sélectionnez Mes images, sélectionnez l'option OCID de l'image, puis entrez l'OCID de l'image personnalisée que vous avez créée à l'étape 3 : Créer une image personnalisée basée sur l'instance de calcul où cgroups v2 est activé.
    5. Sélectionnez Options avancées et, dans la section Gestion, sélectionnez l'option Coller le script cloud-init.
    6. Copiez et collez le script cloud-init pour les noeuds autogérés que vous avez créés précédemment, dans le champ Script Cloud-init.
    7. Sélectionnez Créer pour créer l'instance de calcul pour héberger le noeud autogéré.

    Lorsque l'instance de calcul est créée, elle est ajoutée en tant que noeud autogéré à la grappe avec le point d'extrémité d'API Kubernetes que vous avez spécifié dans le script cloud-init.

  2. (Facultatif) Vérifiez que le noeud autogéré a été ajouté à la grappe Kubernetes et que des étiquettes ont été ajoutées au noeud et définies comme prévu, en suivant les instructions sous Création de noeuds autogérés.

Utilisation de l'interface de ligne de commande

  1. Ouvrez une invite de commande et entrez la commande oci Compute instance launch et les paramètres requis pour créer un noeud autogéré.
  2. En plus des paramètres obligatoires requis par la commande :
    1. Incluez le paramètre --image-id et spécifiez l'OCID de l'image personnalisée que vous avez créée à l'étape 3 : Créer une image personnalisée basée sur l'instance de calcul où cgroups v2 est activé.
    2. Incluez le paramètre --user-data-file et spécifiez le script cloud-init pour les noeuds autogérés que vous avez créés précédemment.

    Par exemple, vous pouvez entrer la commande suivante :

    oci compute instance launch \
    --availability-domain zkJl:PHX-AD-1 \
    --compartment-id ocid1.compartment.oc1..aaaaaaa______neoq \
    --shape VM.Standard2.2 \
    --subnet-id ocid1.subnet.oc1.phx.aaaaaaa______hzia \
    --user-data-file my-selfmgd-cgroupsv2-cloud-init.yaml \
    --image-id ocid1.image.oc1.phx.aaaaaaa______slcr

    Lorsque l'instance de calcul est créée, elle est ajoutée en tant que noeud autogéré à la grappe avec le point d'extrémité d'API Kubernetes que vous avez spécifié dans le script cloud-init.