Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Gérer OCI Kubernetes Engine avec différents types de capacité et résoudre les problèmes courants sur les noeuds préemptibles
Introduction
Tout au long de chaque cycle de transformation numérique, les entreprises continuent d'innover et d'itérer, repoussant les limites de ce qui est possible pour l'infrastructure, les applications et la gestion à grande échelle. L'une des technologies les plus récentes et largement adoptées utilisées pour prendre en charge la gestion des infrastructures et des applications est Kubernetes. Avant de plonger plus loin dans Kubernetes, nous devons d'abord regarder sous le capot le concept de conteneurs.
Les conteneurs sont un package de logiciels comprenant un ensemble de code spécifique à l'application, ainsi que les bibliothèques d'exécution et de programmes nécessaires pour prendre en charge l'exécution fiable d'une application. Les conteneurs sont configurés pour s'exécuter dans un espace utilisateur à l'intérieur du système d'exploitation (O/S) du serveur sous-jacent. Cette architecture permet le découplage des services de base et des dépendances, le déploiement léger d'une application. Les avantages de la mise en conteneur d'applications incluent des améliorations de l'isolement des charges de travail, de l'efficacité des ressources, de l'évolutivité et de la tolérance aux pannes.
Pour exploiter la puissance et l'efficacité des conteneurs à grande échelle, nous avons besoin d'une sorte d'outils pour interfacer ou gérer nos déploiements basés sur des conteneurs. Kubernetes, également appelé K8s, est un outil d'orchestration de conteneurs open source qui automatise le déploiement de conteneurs en créant un cluster de serveurs pour lesquels les conteneurs peuvent être exécutés, mis à l'échelle et livrés à vos utilisateurs. L'architecture de cluster Kubernetes inclut un noeud maître (plan de contrôle) et plusieurs noeuds de processus actif. Chaque processus actif héberge un ou plusieurs pods (collecte de conteneurs) qui fournissent votre application.
Objectifs
- Travaillez avec Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) pour différents types de capacité et résolvez les problèmes courants lors de la préemption.
Prérequis
- Accès administrateur à une location OCI et à un cluster OKE en cours d'exécution.
Quel est le positionnement d'Oracle avec la technologie des conteneurs ?
OKE est un service Kubernetes entièrement géré, évolutif et hautement disponible qui aide les clients à déployer des applications en conteneur vers le cloud. OKE offre aux clients OCI la possibilité d'optimiser l'utilisation des ressources de calcul pour répondre à des exigences de charge globale uniques et de s'adapter rapidement à l'évolution des exigences de charge globale. OKE offre une expérience client transparente offrant aux clients un rapport prix/performances, une efficacité des ressources, une portabilité et une fiabilité inégalées. OKE fournit plusieurs intégrations clés avec divers produits de gestion du cycle de vie des conteneurs, notamment des registres de conteneurs, des structures d'intégration continue et de déploiement continu, des solutions réseau, des options de stockage et des fonctionnalités de sécurité de premier ordre.
Dans OKE, vous pouvez indiquer le type de cluster en tant que clusters de base ou améliorés. Les clusters de base prennent en charge toutes les fonctionnalités de base fournies par OKE. Pour activer d'autres fonctionnalités, les clusters améliorés prennent en charge toutes les fonctionnalités disponibles, y compris les noeuds virtuels, les noeuds autogérés, la gestion des extensions de cluster, les configurations Oracle Cloud Infrastructure Identity and Access Management (OCI IAM), etc.
OKE sur différents types de capacité
-
Capacité à la demande : la capacité à la demande est la capacité disponible standard d'un type de forme donné. Il s'agit du type de capacité par défaut et est effectivement payé pour ce que vous utilisez. Bien qu'il s'agisse du choix standard, en fonction du type de forme et du calendrier, il peut être difficile de répondre à ces demandes pour les charges globales multi-instances volumineuses.
-
Capacité réservée : les réservations de capacité peuvent être utilisées pour provisionner les noeuds gérés par OKE. Les réservations de capacité sont généralement utilisées pour garantir une capacité disponible suffisante pour les charges de travail critiques pendant la production ayant un impact sur les événements, notamment la maintenance planifiée, la croissance de la demande des utilisateurs et la récupération après sinistre. Les réservations de capacité entraînent un coût de 85 % du prix catalogue des SKU alors que les ressources réservées ne sont pas utilisées activement. Pour tirer parti d'une réservation de capacité, vous devez d'abord créer l'objet de réservation de capacité et indiquer la région/le domaine de disponibilité, ainsi que le type et la taille de forme. Une fois la réservation de capacité créée, vous pouvez indiquer la réservation spécifique comme type de capacité lors du déploiement de noeuds dans votre pool de noeuds.
-
Capacité préemptive : les noeuds gérés par OKE peuvent désormais être provisionnés avec des formes de calcul préemptives. Les formes préemptives peuvent être une source d'économies (remise de 50 % par rapport au prix catalogue des SKU). Cependant, Oracle conserve le droit de récupérer ces ressources de calcul si/lorsque cela est nécessaire pour une demande à priorité plus élevée. Le calcul préemptif peut être une bonne option si vous disposez de charges de travail tolérantes aux pannes sans état qui peuvent résister à l'interruption. Pour plus de visibilité, vous pouvez choisir d'être averti lorsqu'une instance est arrêtée lors du déploiement du calcul préemptif. Dans le cluster OKE, l'état attendu du pool de noeuds tente de lancer une ou plusieurs nouvelles instances pour remplacer les instances récupérées.
Déploiement OKE avec pools de noeuds préemptibles et OnDemand
Problèmes connus avec Preemptible
Il existe des problèmes connus lors de l'utilisation de préemptive avec OKE.
-
Problème : certains clients reçoivent l'erreur NonRetryable BmcException : erreur renvoyée par l'opération LaunchInstance dans le service Compute. (400, InvalidParameter, false) Impossible de lancer une instance préemptive avec un ID de réservation de capacité lors de la création des formes préemptives E3/E4.
- Solution : il existe un bug OKE connu avec des noeuds de processus actif préemptibles et
<capacityreservationId>
vides. Si vous essayez d'utiliser la capacité préemptive lors de la création d'un pool de noeuds via l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI) ou le terraform sans transmettre le paramètre<capacityReservationId>
dans le cadre de la section de configuration de placement, vous pouvez créer des noeuds de processus actif préemptifs. Toutefois, si vous créez le pool de noeuds via la console, une valeur<capacityReservationId>
vide est transmise par défaut, ce qui génère une erreur lors de la tentative d'utilisation de formes préemptives. La solution de contournement consiste à définir explicitement<capacityReservationId>
sur NULL dans la configuration de placement.
- Solution : il existe un bug OKE connu avec des noeuds de processus actif préemptibles et
-
Problème : lorsque vous utilisez deux pools de noeuds (l'un utilisant la préemption, l'autre utilisant à la demande) et tirez parti des expandeurs basés sur la priorité pour l'outil de redimensionnement automatique. Configuration d'un pool de noeuds préemptive en tant que priorité la plus élevée, ensemble de pools de noeuds à la demande à utiliser si le pool de noeuds préemptive est en mauvais état en raison d'une erreur OutOfHostCapacity avec une capacité préemptive. Dans certains cas, l'outil de redimensionnement automatique de cluster ne rétablit pas le pool de noeuds à la demande, même si le pool de noeuds préemptible est en mauvais état si le pool de noeuds comporte 0 noeud.
- Solution : cette configuration fonctionne, mais uniquement lorsque les deux pools de noeuds comportent au moins 1 noeud chacun.
-
Problème : lors de la sélection de la capacité préemptive dans l'assistant de provisionnement OKE via la console, les formes AMD disponibles sont limitées à E3 et E4. E5 n'y est pas affiché ; cependant, la capacité préemptive E5 est prise en charge pour OKE.
-
Solution : créez des pools de noeuds gérés avec une forme E5 préemptive à l'aide de l'API ou de l'interface de ligne de commande.
--node-shape VM.Standard.E5.Flex
-
Tâche 1 : étapes de création d'un pool de noeuds de processus actif OKE préemptif E5 à l'aide de l'interface de ligne de commande (CLI)
-
Connectez-vous à la console OCI et cliquez sur le menu Services.
-
Accédez à Services de développeur.
-
Sous Conteneurs et artefacts, cliquez sur Cliquez sur Kubernetes Engine (OKE).
-
Cliquez sur Shell OCI Cloud pour afficher l'interface de ligne de commande.
-
Modifiez l'OCID
node-pool
, l'OCIDcompartment
,subnet-id
,fault domain
, la configuration et la taille avant d'exécuter les commandes d'interface de ligne de commande suivantes dans votre location.oci ce node-pool create --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaxlokvt2r25b6dmdxxxxxxxxxxxxxxxxxkhdilj7kpehc5vke2ve5gq --compartment-id ocid1.compartment.oc1..aaaaaaaaqufgrkgzr4zb3dxxxxxxxxxxxxxxxxxxp7jx7yckglghxppfrui6a --name E5_Preemtible --node-shape VM.Standard.E5.Flex --placement-configs '[{"availabilityDomain": "FZyT:US-ASHBURN-AD-2", "preemptibleNodeConfig": {"preemptionAction":{"isPreserveBootVolume":true, "type": "TERMINATE"}}, "subnet-id": "ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhu72xxxxxxxxxxxxxxxxxxxxtlkp4dmixebzhgrwdlmtteclq", "faultDomains":["FAULT-DOMAIN-1"]}]' --size 1 --node-image-id ocid1.image.oc1.iad.aaaaaaaajvtta4i5sq4xxxxxxxxxxxxxcskfxjwz4vwxz6ersmmax6q --node-shape-config '{"memoryInGBs": 6.0, "ocpus": 1.0}' --pod-subnet-ids '["ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhxxxxxxxxxxxxxxxkp4dmixebzhgrwdlmtteclq"]'
Cette opération génère l'OCID de la demande de travail pour la création du pool de noeuds et crée le noeud de processus actif préemptible E5 dans le cluster existant, comme illustré dans l'image suivante.
Liens connexes
Remerciements
- Auteurs - Payal Sharma (architecte cloud senior), Anthony Vernava IV (architecte cloud senior)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19912-01
November 2024