Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Gérer le moteur Kubernetes pour OCI avec des types de capacité différents et résoudre les problèmes communs sur les noeuds préemptifs
Présentation
À mesure que nous poursuivons 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. Kubernetes est l'une des technologies les plus récentes et les plus largement adoptées pour prendre en charge la gestion de l'infrastructure et des applications. Avant de plonger plus loin dans Kubernetes, nous devons d'abord regarder sous le capot le concept de conteneurs.
Les conteneurs sont un ensemble de logiciels comprenant une collection 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 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 conteneurisation d'applications comprennent des améliorations dans l'isolement de la charge de travail, l'efficacité des ressources, l'extensibilité et la tolérance aux pannes.
Pour exploiter la puissance et l'efficacité des conteneurs à grande échelle, nous avons besoin d'outils pour interfacer ou gérer nos déploiements basés sur des conteneurs. Kubernetes, également connu sous le nom K8s, est un outil d'orchestration de conteneurs à code source libre qui automatise le déploiement de conteneurs en créant une grappe de serveurs pour lesquels des conteneurs peuvent être exécutés, mis à l'échelle et livrés à vos utilisateurs. L'architecture de grappe Kubernetes comprend un noeud principal (plan de contrôle) et plusieurs noeuds de travail. Chaque travailleur héberge un ou plusieurs pods (collecte de conteneurs) qui alimentent 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 concernant les options préemptives.
Préalables
- Accès administrateur à une location OCI et à une grappe OKE en cours d'exécution.
Comment se positionne Oracle avec la technologie de conteneur?
OKE est un service Kubernetes entièrement géré, évolutif et hautement disponible qui aide les clients à déployer des applications conteneurisées dans le nuage. OKE permet aux clients d'OCI d'optimiser l'utilisation des ressources de calcul afin de répondre à des exigences de charge de travail uniques et de s'adapter rapidement lorsque les exigences de charge de travail changent. OKE offre une expérience client transparente qui offre aux clients un rapport prix-performance, une efficacité des ressources, une portabilité et une fiabilité inégalées. OKE fournit plusieurs intégrations clés à divers produits de gestion du cycle de vie des conteneurs, notamment des registres de conteneurs, des cadres d'intégration et de développement en continu, des solutions de réseau, des options de stockage et des fonctions de sécurité de premier ordre.
Dans OKE, vous pouvez indiquer le type de cluster comme cluster de base ou amélioré. Les clusters de base prennent en charge toutes les fonctionnalités de base fournies par OKE. Pour renforcer les capacités, les grappes améliorées prennent en charge toutes les fonctions disponibles, notamment les noeuds virtuels, les noeuds autogérés, la gestion des modules complémentaires de grappe, les configurations plus granulaires d'Oracle Cloud Infrastructure Identity and Access Management (OCI IAM), etc.
OKE sur différents types de capacité
-
Capacité sur demande : La capacité sur 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, selon le type de forme et le moment, il peut être difficile d'exécuter ces demandes pour les charges de travail à instances multiples volumineuses.
-
Capacité réservée : Les réservations de capacité peuvent être utilisées pour provisionner les noeuds gérés OKE. Les réservations de capacité sont généralement utilisées pour assurer une capacité disponible suffisante pour les charges de travail essentielles à l'entreprise pendant les événements ayant une incidence sur la production, y compris la maintenance planifiée, la croissance de la demande des utilisateurs et la reprise après sinistre. Les réservations de capacité entraînent un coût de 85 % du prix de catalogue de l'UDS 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 spécifier la région/le domaine de disponibilité, ainsi que le type de forme et la taille. Une fois la réservation de capacité créée, vous pouvez spécifier la réservation spécifique comme type de capacité lors du déploiement de noeuds dans votre groupe de noeuds.
-
Capacité préemptive : Les noeuds gérés par OKE peuvent maintenant être provisionnés avec des formes de calcul préemptives. Les formes préemptives peuvent représenter une source d'économies (remise de 50 % par rapport au prix de catalogue d'UDS). Toutefois, Oracle conserve le droit de réclamer ces ressources de calcul si nécessaire pour une demande prioritaire. Le calcul préemptif peut être une bonne option si vous avez des charges de travail tolérantes aux pannes sans état qui peuvent résister aux interruptions. Pour plus de visibilité, vous pouvez choisir d'être avisé lorsqu'une instance prend fin lors du déploiement d'un calcul préemptif. Dans la grappe OKE, l'état attendu du groupe de noeuds tentera de lancer une ou plusieurs nouvelles instances pour remplacer les instances facturées.
Déploiement OKE avec groupes de noeuds préemptifs et OnDemand
Problèmes connus liés à la franchise
Il existe des problèmes connus lors de l'utilisation de l'option Préemptive avec OKE.
-
Problème : Certains clients obtiennent l'erreur NonRetryable BmcException : Erreur retournée par l'opération LaunchInstance dans le service de calcul. (400, InvalidParameter, faux) Impossible de lancer une instance préemptive avec un ID réservation de capacité lors de la création des formes préemptives E3/E4.
- Solution : Il existe un bogue OKE connu avec des noeuds de travail
<capacityreservationId>
et préemptifs vides. Si vous essayez d'utiliser la capacité préemptive lors de la création d'un groupe de noeuds au moyen de l'interface de ligne de commande d'Oracle Cloud Infrastructure (interface de ligne de commande OCI) ou terraform sans transmettre le paramètre<capacityReservationId>
dans la section de configuration du placement, vous pouvez créer des noeuds de travail préemptifs. Toutefois, si vous créez le groupe de noeuds au moyen de la console,<capacityReservationId>
vide est transmis par défaut, ce qui génère une erreur lors de la tentative d'utilisation de formes préemptives. La solution de rechange consiste à régler explicitement<capacityReservationId>
à une valeur nulle dans la configuration de placement.
- Solution : Il existe un bogue OKE connu avec des noeuds de travail
-
Problème : Lorsque vous utilisez deux groupes de noeuds (l'un utilisant la fonctionnalité préemptive, l'autre utilisant la fonctionnalité à la demande) et que vous utilisez des extensions basées sur les priorités pour l'ajustement automatique. Configuration du groupe de noeuds préemptifs en tant que groupe de noeuds à priorité la plus élevée et sur demande défini pour être utilisé si le groupe de noeuds préemptif présente un état non sain en raison d'une erreur OutOfHostCapacity avec capacité préemptive. Dans certains cas, l'ajustement automatique du cluster ne revient pas au groupe de noeuds à la demande même si le groupe de noeuds préemptif n'est pas sain si le groupe de noeuds comporte 0 noeud.
- Solution : Cette configuration fonctionne, mais uniquement lorsque les deux groupes de noeuds ont au moins 1 noeud chacun.
-
Problème : Lors de la sélection de la capacité préemptive dans l'assistant de provisionnement OKE au moyen de la console, les formes AMD disponibles sont limitées à E3 et E4. E5 n'y est pas affiché; toutefois, la capacité préemptive E5 est prise en charge pour OKE.
-
Solution : Créez des groupes 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 groupe de noeuds de travail OKE préemptif E5 à l'aide de l'interface de ligne de commande
-
Connectez-vous à la console OCI et cliquez sur le menu Services.
-
Accédez à Services de développement.
-
Sous Conteneurs et objets, cliquez sur Cliquez sur Kubernetes Engine (OKE).
-
Cliquez sur Interpréteur de commandes 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"]'
L'OCID de la demande de travail pour la création du groupe de noeuds et le noeud de travail préemptif E5 dans la grappe existante seront affichés dans l'image suivante.
Liens connexes
Confirmation
- Auteurs - Payal Sharma (architecte principal de nuage d'entreprise), Anthony Vernava IV (architecte principal de nuage d'entreprise)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19911-01
November 2024