Module d'extension GPU AMD

Lorsque vous activez l'extension de cluster de modules d'extension GPU AMD, vous pouvez transmettre les paires clé/valeur suivantes en tant qu'arguments.

Notez que pour vous assurer que les charges de travail exécutées sur les noeuds de processus actif de GPU AMD ne sont pas interrompues de manière inattendue, nous vous recommandons de choisir la version du module d'extension de GPU AMD à déployer, plutôt que d'indiquer que vous souhaitez qu'Oracle mette à jour le module automatiquement.

Arguments de configuration communs à la plupart des modules complémentaires de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
affinity affinité

Groupe de règles de programmation d'affinité.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU Nvidia
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.affinity
  • Opérateur réseau NVIDIA, utilisez operator.affinity
  • Pilote CSI SMB, utilisez contoller.affinity
  • Opérateur de GPU AMD, utilisez controllerManager.affinity
Facultatif NULL NULL
nodeSelectors Sélecteurs de noeud

Vous pouvez utiliser des sélecteurs de noeud et des libellés de noeud pour contrôler les noeuds de processus actif sur lesquels les pods d'extension sont exécutés.

Pour qu'un pod s'exécute sur un noeud, le sélecteur de noeud du pod doit avoir la même clé/valeur que l'étiquette du noeud.

Définissez nodeSelectors sur une paire clé/valeur correspondant à la fois au sélecteur de noeud du pod et au libellé du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez worker.nodeSelector
  • Opérateur réseau NVIDIA, utilisez operator.nodeSelectors
  • Opérateur de GPU AMD, utilisez selector ou controllerManager.nodeSelector
Facultatif NULL {"foo":"bar", "foo2": "bar2"}

Le pod s'exécutera uniquement sur les noeuds possédant le libellé foo=bar ou foo2=bar2.

numOfReplicas numOfReplicas Nombre de répliques du déploiement de l'extension.
Non utilisé par:
  • Module d'extension GPU AMD
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • CoreDNS, utilisez nodesPerReplica
  • Repérage des fonctionnalités de noeud, utilisez master.replicaCount
  • Opérateur de GPU AMD, utilisez controllerManager.replicas
Requis 1

Crée une réplique du déploiement d'extension par cluster.

2

Crée deux répliques du déploiement d'extension par cluster.

rollingUpdate rollingUpdate

Contrôle le comportement souhaité de la mise à jour non simultanée par maxSurge et maxUnavailable.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Opérateur de GPU NVIDIA, utilisez daemonsets.rollingUpdate.maxUnavailable
  • Opérateur de GPU AMD, utilisez upgradePolicy dans devicePlugin, metricsExporter, testRunner, configManager ou draDriver
Facultatif NULL NULL
tolerations tolérances

Vous pouvez utiliser des tolérances et des taches pour contrôler les noeuds de processus actif sur lesquels les pods d'extension s'exécutent.

Pour qu'un pod s'exécute sur un noeud présentant une entorse, le pod doit avoir une tolérance correspondante.

Définissez tolerations sur une paire clé/valeur correspondant à la fois à la tolérance du pod et à la tache du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.tolerations et/ou worker.tolerations
  • Opérateur de GPU NVIDIA, utilisez daemonsets.tolerations
  • Opérateur réseau NVIDIA, utilisez operator.tolerations
  • Pilote CSI SMB, utilisez controller.tolerations
  • Opérateur GPU AMD, utilisez les tolérances dans devicePlugin, metricsExporter, testRunner, configManager, draDriver ou controllerManager
Facultatif NULL [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Seuls les pods présentant cette tolérance peuvent être exécutés sur des noeuds de processus actif présentant la tache tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Comment répartir les pods correspondants entre la topologie donnée.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
  • Opérateur de GPU AMD
Facultatif NULL NULL
Arguments de configuration propres à ce module complémentaire de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
amd-gpu-device-plugin.ContainerResources ressources de conteneur amd-gpu-device-plugin

Vous pouvez spécifier les quantités de ressources demandées par les conteneurs d'extension et définir les limites d'utilisation des ressources que les conteneurs d'extension ne peuvent pas dépasser.

Format JSON en texte brut ou encodé Base64.

Facultatif NULL {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Créez des conteneurs d'extension qui demandent 100 milllicores de CPU et 100 mégaoctets de mémoire. Limitez les conteneurs d'extension à 500 milllicores de CPU et 200 mégaoctets de mémoire.

pulse Activer les vérifications de l'état

Intervalle (en secondes) entre la mise à jour du kubelet avec l'état d'intégrité du périphérique par le module d'extension.

Définissez la valeur sur 0 pour désactiver la vérification de l'état.

Facultatif 0
Considérations relatives aux clusters volumineux

Le tableau suivant décrit les considérations relatives à la configuration de ce module complémentaire de cluster dans les clusters volumineux.

Nom d'argument Nombre de noeuds de processus métier de rôles Description à mesure que la taille du cluster augmente Risques Recommandation
amd-gpu-device-plugin.ContainerResources Y (Oui)

Définit les demandes de CPU et de mémoire et les limites pour les conteneurs de module d'extension de GPU AMD.

Le module d'extension s'exécute sur chaque noeud de GPU.

L'utilisation totale des ressources augmente linéairement avec le nombre de noeuds GPU.

Les activités suivantes augmentent :

  • Surveillance de l'état des GPU
  • Signalement de l'état du périphérique au kubelet
  • Interactions avec l'exécution du conteneur

Si les ressources sont sous-dimensionnées :

  • Le module d'extension peut devenir instable sur les noeuds.
  • Les GPU peuvent ne pas être affichés correctement en tant que ressources amd.com/gpu .
  • Les pods demandant des GPU peuvent rester à l'état Pending .
  • Les ressources peuvent être signalées de manière incorrecte au planificateur.

Augmentez la mémoire et la CPU allouées sur chaque noeud en fonction des facteurs suivants :

  • Nombre de GPU sur le noeud
  • Intensité de charge globale

Surveillez les journaux de kubelet et l'utilisation de la CPU et de la mémoire du module d'extension.

nodeSelectors/affinity Y (Oui)

Contrôle les noeuds sur lesquels le module d'extension s'exécute à l'aide de libellés.

Garantit que le module d'extension s'exécute uniquement sur les noeuds GPU AMD.

Empêche la planification inutile sur les noeuds de CPU uniquement.

Si aucun sélecteur n'est spécifié, le module d'extension s'exécute sur tous les noeuds et gaspille les ressources.

Si le sélecteur indiqué est incorrect, le module d'extension ne s'exécute pas sur les noeuds GPU et les GPU ne sont pas visibles par Kubernetes.

Même une petite erreur de configuration affectant 1 à 2 % des noeuds peut entraîner des centaines de noeuds mal configurés, une disponibilité de GPU incohérente et des échecs de planification imprévisibles.

Utilisez l'étiquetage strict des noeuds.

tolerations Y (Oui)

Contrôle si le module d'extension peut être exécuté sur des noeuds GPU endommagés.

S'il n'est pas configuré correctement, le démon DaemonSet du module d'extension de GPU AMD risque de ne pas planifier sur les noeuds GPU présentant des taches, ce qui empêche la détection des ressources GPU et rend les GPU indisponibles pour la planification de la charge globale.

Si les tolérances sont mal configurées, le module d'extension ne peut pas s'exécuter sur les noeuds GPU et les GPU deviennent inutilisables.

Assurez-vous que les tolérances correspondent aux taches appliquées aux noeuds GPU.

pulse Y (Oui)

Contrôle la fréquence à laquelle le plug-in signale les informations d'intégrité du GPU au kubelet.

Une fréquence de reporting plus élevée offre une meilleure visibilité sur l'état des GPU, mais génère davantage de trafic de kubelets et d'API.

Une fréquence de reporting plus faible réduit les frais généraux mais retarde la détection des défaillances.

Si les mises à jour sont trop fréquentes, la surcharge de la CPU sur chaque noeud et la charge des kubelets augmentent.

Si les mises à jour sont trop rares ou désactivées, les informations sur l'état des GPU peuvent devenir obsolètes et le planificateur peut affecter des charges de travail à des GPU en mauvais état.

Utilisez un intervalle modéré qui équilibre la visibilité de l'état par rapport aux frais généraux.

Évitez les sondages trop agressifs.

rollingUpdate N

Contrôle le comportement de mise à jour.

Dans les clusters volumineux, de nombreux noeuds peuvent être mis à jour simultanément, ce qui affecte la disponibilité des GPU lors des mises à niveau.

  • Les charges de travail GPU peuvent être interrompues.
  • Les GPU peuvent être temporairement indisponibles.

Utilisez des mises à jour non simultanées contrôlées pour éviter toute interruption généralisée.

numOfReplicas N

Cet argument n'est pas utilisé par le module d'extension GPU AMD.

Non applicable Non applicable Non applicable