3.11. Définir un quota de ressources de calcul pour OpenShift Pipelines
Un objet ResourceQuota
dans Red Hat OpenShift Pipelines contrôle la consommation totale de ressources par espace de noms. Vous pouvez l'utiliser pour limiter la quantité d'objets créés dans un espace de noms, en fonction du type d'objet. En outre, vous pouvez spécifier un quota de ressources de calcul pour limiter la quantité totale de ressources de calcul consommées dans un espace de noms.
Cependant, vous pourriez vouloir limiter la quantité de ressources de calcul consommées par les pods résultant de l'exécution d'un pipeline, plutôt que de définir des quotas pour l'ensemble de l'espace de noms. Actuellement, Red Hat OpenShift Pipelines ne vous permet pas de spécifier directement le quota de ressources de calcul pour un pipeline.
3.11.1. Approches alternatives pour limiter la consommation de ressources de calcul dans OpenShift Pipelines Copier lienLien copié sur presse-papiers!
Pour obtenir un certain degré de contrôle sur l'utilisation des ressources informatiques par un pipeline, il convient d'envisager les approches alternatives suivantes :
Définir les demandes et les limites de ressources pour chaque étape d'une tâche.
Exemple : Définir les demandes et les limites de ressources pour chaque étape d'une tâche.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Définissez des limites de ressources en spécifiant des valeurs pour l'objet
LimitRange
. Pour plus d'informations surLimitRange
, reportez-vous à la section Limiter la consommation de ressources avec des plages de limites. - Réduire la consommation de ressources du pipeline.
- Définir et gérer des quotas de ressources par projet.
- Idéalement, le quota de ressources de calcul pour un pipeline devrait correspondre à la quantité totale de ressources de calcul consommées par les pods fonctionnant simultanément dans un pipeline. Cependant, les pods qui exécutent les tâches consomment des ressources de calcul en fonction du cas d'utilisation. Par exemple, une tâche de construction Maven peut nécessiter différentes ressources de calcul pour les différentes applications qu'elle construit. Par conséquent, vous ne pouvez pas prédéterminer les quotas de ressources de calcul pour les tâches d'un pipeline générique. Pour une meilleure prévisibilité et un meilleur contrôle de l'utilisation des ressources de calcul, utilisez des pipelines personnalisés pour différentes applications.
Lors de l'utilisation de Red Hat OpenShift Pipelines dans un espace de noms configuré avec un objet ResourceQuota
, les pods résultant des exécutions de tâches et des exécutions de pipelines peuvent échouer avec une erreur, telle que : failed quota: <quota name> must specify cpu, memory
.
Pour éviter cette erreur, effectuez l'une des opérations suivantes :
- (Recommandé) Spécifiez une plage de limites pour l'espace de noms.
- Définir explicitement les demandes et les limites pour tous les conteneurs.
Pour plus d'informations, reportez-vous à la question et à la résolution.
Si votre cas d'utilisation n'est pas couvert par ces approches, vous pouvez mettre en œuvre une solution de contournement en utilisant un quota de ressources pour une classe de priorité.
3.11.2. Spécifier le quota de ressources des pipelines en utilisant la classe de priorité Copier lienLien copié sur presse-papiers!
Un objet PriorityClass
associe les noms des classes de priorité aux valeurs entières qui indiquent leurs priorités relatives. Les valeurs les plus élevées augmentent la priorité d'une classe. Après avoir créé une classe de priorité, vous pouvez créer des modules qui spécifient le nom de la classe de priorité dans leurs spécifications. En outre, vous pouvez contrôler la consommation de ressources système d'un pod en fonction de sa priorité.
La spécification d'un quota de ressources pour un pipeline est similaire à la définition d'un quota de ressources pour le sous-ensemble de pods créés par l'exécution d'un pipeline. Les étapes suivantes fournissent un exemple de solution de contournement en spécifiant un quota de ressources basé sur la classe de priorité.
Procédure
Créer une classe de priorité pour un pipeline.
Exemple : Classe de priorité pour un pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un quota de ressources pour un pipeline.
Exemple : Quota de ressources pour un pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier l'utilisation du quota de ressources pour le pipeline.
Exemple : Vérifier l'utilisation des quotas de ressources pour le pipeline
oc describe quota
$ oc describe quota
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Comme les pods ne sont pas en cours d'exécution, le quota est inutilisé.
Créer les pipelines et les tâches.
Exemple : YAML pour le pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple : YAML pour une tâche dans le pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteVeiller à ce que toutes les tâches du pipeline appartiennent à la même classe de priorité.
Créer et lancer l'exécution du pipeline.
Exemple : YAML pour l'exécution d'un pipeline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Une fois les pods créés, vérifiez l'utilisation du quota de ressources pour l'exécution du pipeline.
Exemple : Vérifier l'utilisation des quotas de ressources pour le pipeline
oc describe quota
$ oc describe quota
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La sortie indique que vous pouvez gérer le quota de ressources combiné pour tous les pods fonctionnant simultanément et appartenant à une classe de priorité, en spécifiant le quota de ressources par classe de priorité.