Chapitre 3. Déployer les charges de travail des conteneurs sandboxés d'OpenShift


Vous pouvez installer l'OpenShift sandboxed containers Operator en utilisant la console web ou l'OpenShift CLI (oc). Avant d'installer l'OpenShift sandboxed containers Operator, vous devez préparer votre cluster OpenShift Container Platform.

3.1. Conditions préalables

Avant d'installer les conteneurs OpenShift sandboxed, assurez-vous que votre cluster OpenShift Container Platform répond aux exigences suivantes :

  • Votre cluster doit être installé sur une infrastructure bare-metal sur site avec des travailleurs Red Hat Enterprise Linux CoreOS (RHCOS). Vous pouvez utiliser n'importe quelle méthode d'installation, y compris le provisionnement par l'utilisateur, le provisionnement par l'installateur ou l'installation assistée pour déployer votre cluster.

    Note
    • Les conteneurs OpenShift sandboxed ne prennent en charge que les nœuds de travail RHCOS. Les nœuds RHEL ne sont pas pris en charge.
    • La virtualisation imbriquée n'est pas prise en charge.
  • Vous pouvez installer les conteneurs OpenShift sandboxed sur les instances bare-metal d'Amazon Web Services (AWS). Les instances bare-metal proposées par d'autres fournisseurs de cloud ne sont pas prises en charge.

3.1.1. Ressources nécessaires pour les conteneurs OpenShift sandboxed

OpenShift sandboxed containers permet aux utilisateurs d'exécuter des charges de travail sur leurs clusters OpenShift Container Platform à l'intérieur d'un runtime sandboxed (Kata). Chaque pod est représenté par une machine virtuelle (VM). Chaque VM s'exécute dans un processus QEMU et héberge un processus kata-agent qui agit en tant que superviseur pour gérer les charges de travail des conteneurs et les processus s'exécutant dans ces conteneurs. Deux processus supplémentaires ajoutent des frais généraux :

  • containerd-shim-kata-v2 est utilisé pour communiquer avec le pod.
  • virtiofsd gère l'accès au système de fichiers de l'hôte pour le compte de l'invité.

Chaque VM est configurée avec une quantité de mémoire par défaut. La mémoire supplémentaire est connectée à chaud à la VM pour les conteneurs qui demandent explicitement de la mémoire.

Un conteneur fonctionnant sans ressource mémoire consomme de la mémoire libre jusqu'à ce que la mémoire totale utilisée par la VM atteigne l'allocation par défaut. L'invité et ses tampons d'E/S consomment également de la mémoire.

Si un conteneur se voit attribuer une quantité spécifique de mémoire, cette mémoire est connectée à chaud à la VM avant le démarrage du conteneur.

Lorsqu'une limite de mémoire est spécifiée, la charge de travail est interrompue si elle consomme plus de mémoire que la limite. Si aucune limite de mémoire n'est spécifiée, le noyau s'exécutant sur la VM peut manquer de mémoire. Si le noyau manque de mémoire, il peut mettre fin à d'autres processus sur la VM.

Tailles de mémoire par défaut

Le tableau suivant présente certaines valeurs par défaut pour l'allocation des ressources.

RessourcesValeur

Mémoire allouée par défaut à une machine virtuelle

2Gi

Utilisation de la mémoire du noyau Linux invité au démarrage

~110Mi

Mémoire utilisée par le processus QEMU (à l'exclusion de la mémoire VM)

~30Mi

Mémoire utilisée par le processus virtiofsd (à l'exclusion des tampons d'E/S de la VM)

~10Mi

Mémoire utilisée par le processus containerd-shim-kata-v2

~20Mi

Données du cache du tampon de fichier après l'exécution de dnf install sur Fedora

~300Mi* [1]

Les tampons de fichiers apparaissent et sont pris en compte à plusieurs endroits :

  • Dans l'invité où il apparaît en tant que cache de tampon de fichier.
  • Dans le démon virtiofsd qui établit la correspondance entre les opérations d'E/S de fichiers autorisées dans l'espace utilisateur.
  • Dans le processus QEMU en tant que mémoire invitée.
Note

L'utilisation totale de la mémoire est correctement prise en compte par les mesures d'utilisation de la mémoire, qui ne comptent la mémoire qu'une seule fois.

L'overhead pod décrit la quantité de ressources système utilisée par un pod sur un nœud. Vous pouvez obtenir le pod overhead actuel pour le runtime Kata en utilisant oc describe runtimeclass kata comme indiqué ci-dessous.

Exemple :

$ oc describe runtimeclass kata
Copy to Clipboard

Exemple de sortie

kind: RuntimeClass
apiVersion: node.k8s.io/v1
metadata:
  name: kata
overhead:
  podFixed:
    memory: "500Mi"
    cpu: "500m"
Copy to Clipboard

Vous pouvez modifier l'overhead du pod en changeant le champ spec.overhead pour un RuntimeClass. Par exemple, si la configuration que vous exécutez pour vos conteneurs consomme plus de 350Mi de mémoire pour le processus QEMU et les données du noyau invité, vous pouvez modifier l'overhead RuntimeClass pour l'adapter à vos besoins.

Note

Les valeurs de frais généraux par défaut spécifiées sont prises en charge par Red Hat. La modification des valeurs de frais généraux par défaut n'est pas prise en charge et peut entraîner des problèmes techniques.

Lors de l'exécution de tout type d'E/S du système de fichiers dans l'invité, des tampons de fichiers sont alloués dans le noyau de l'invité. Les tampons de fichiers sont également mappés dans le processus QEMU sur l'hôte, ainsi que dans le processus virtiofsd.

Par exemple, si vous utilisez 300Mi de cache de tampon de fichier dans l'invité, QEMU et virtiofsd semblent utiliser 300Mi de mémoire supplémentaire. Cependant, la même mémoire est utilisée dans les trois cas. En d'autres termes, l'utilisation totale de la mémoire n'est que de 300Mi, mappée à trois endroits différents. Ce fait est correctement pris en compte dans le rapport sur l'utilisation de la mémoire.

3.1.2. Vérifier si les nœuds de cluster sont éligibles pour exécuter les conteneurs OpenShift sandboxed

Avant d'exécuter des conteneurs OpenShift sandboxed, vous pouvez vérifier si les nœuds de votre cluster sont éligibles pour exécuter des conteneurs Kata. Certains nœuds du cluster peuvent ne pas être conformes aux exigences minimales des conteneurs sandboxed. La raison la plus courante de l'inéligibilité d'un nœud est l'absence de support de virtualisation sur le nœud. Si vous tentez d'exécuter des charges de travail en bac à sable sur des nœuds non éligibles, vous rencontrerez des erreurs. Vous pouvez utiliser l'opérateur NFD (Node Feature Discovery) et une ressource NodeFeatureDiscovery pour vérifier automatiquement l'éligibilité des nœuds.

Note

Si vous souhaitez installer le moteur d'exécution Kata sur des nœuds de travail sélectionnés dont vous savez qu'ils sont éligibles, appliquez l'étiquette feature.node.kubernetes.io/runtime.kata=true aux nœuds sélectionnés et définissez checkNodeEligibility: true dans la ressource KataConfig.

Pour installer le moteur d'exécution Kata sur tous les nœuds de travail, définissez checkNodeEligibility: false dans la ressource KataConfig.

Dans ces deux scénarios, il n'est pas nécessaire de créer la ressource NodeFeatureDiscovery. Vous ne devez appliquer manuellement le label feature.node.kubernetes.io/runtime.kata=true que si vous êtes sûr que le nœud est éligible pour exécuter des conteneurs Kata.

La procédure suivante applique l'étiquette feature.node.kubernetes.io/runtime.kata=true à tous les nœuds éligibles et configure la ressource KataConfig pour vérifier l'éligibilité des nœuds.

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Connectez-vous en tant qu'utilisateur disposant des privilèges cluster-admin.
  • Installer l'opérateur NFD (Node Feature Discovery).

Procédure

  1. Créer une ressource NodeFeatureDiscovery pour détecter les capacités des nœuds adaptés à l'exécution des conteneurs Kata :

    1. Enregistrez le YAML suivant dans le fichier nfd.yaml:

      apiVersion: nfd.openshift.io/v1
      kind: NodeFeatureDiscovery
      metadata:
        name: nfd-kata
        namespace: openshift-nfd
      spec:
        operand:
          image: quay.io/openshift/origin-node-feature-discovery:4.10
          imagePullPolicy: Always
          servicePort: 12000
        workerConfig:
          configData: |
            sources:
               custom:
                 - name: "feature.node.kubernetes.io/runtime.kata"
                   matchOn:
                     - cpuId: ["SSE4", "VMX"]
                       loadedKMod: ["kvm", "kvm_intel"]
                     - cpuId: ["SSE4", "SVM"]
                       loadedKMod: ["kvm", "kvm_amd"]
      Copy to Clipboard
    2. Créer la ressource personnalisée (CR) NodeFeatureDiscovery:

      $ oc create -f nfd.yaml
      Copy to Clipboard

      Exemple de sortie

      nodefeaturediscovery.nfd.openshift.io/nfd-kata created
      Copy to Clipboard

      Une étiquette feature.node.kubernetes.io/runtime.kata=true est appliquée à tous les nœuds de travail qualifiés.

  2. Définissez le champ checkNodeEligibility sur true dans la ressource KataConfig pour activer la fonctionnalité, par exemple :

    1. Enregistrez le YAML suivant dans le fichier kata-config.yaml:

      apiVersion: kataconfiguration.openshift.io/v1
      kind: KataConfig
      metadata:
        name: example-kataconfig
      spec:
        checkNodeEligibility: true
      Copy to Clipboard
    2. Créer le CR KataConfig:

      $ oc create -f kata-config.yaml
      Copy to Clipboard

      Exemple de sortie

      kataconfig.kataconfiguration.openshift.io/example-kataconfig created
      Copy to Clipboard

Vérification

  • Vérifiez que les nœuds admissibles de la grappe sont correctement étiquetés :

    $ oc get nodes --selector='feature.node.kubernetes.io/runtime.kata=true'
    Copy to Clipboard

    Exemple de sortie

    NAME                           STATUS                     ROLES    AGE     VERSION
    compute-3.example.com          Ready                      worker   4h38m   v1.25.0
    compute-2.example.com          Ready                      worker   4h35m   v1.25.0
    Copy to Clipboard

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat