Utilisation de la capacité préemptive pour provisionner des noeuds de travail
Découvrez comment spécifier une capacité préemptive pour les instances de calcul hébergeant des noeuds de travail dans les groupes de noeuds des grappes que vous avez créées à l'aide de Kubernetes Engine (OKE).
Lorsque vous utilisez le moteur Kubernetes pour définir la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier la capacité préemptive comme type de capacité pour les instances de calcul hébergeant des noeuds de travail dans le groupe de noeuds. La spécification de la capacité préemptive vous permet d'économiser de l'argent en utilisant des instances préventives pour exécuter des charges de travail qui ne doivent fonctionner que pendant de courtes périodes ou qui peuvent être interrompues lorsque la capacité est récupérée.
Les instances préemptives se comportent de la même manière que les instances de calcul normales, mais la capacité est récupérée lorsqu'elle est nécessaire ailleurs et les instances prennent fin. Si les charges de travail sont tolérantes aux défaillances et peuvent résister à des interruptions, vous pouvez ainsi réduire les coûts. Par exemple, vous pouvez utiliser des instances préemptives pour optimiser les coûts des charges de travail qui peuvent tolérer des interruptions, telles que les tests qui peuvent être arrêtés et repris ultérieurement. Pour plus d'informations, voir Instances préemptives.
Lorsqu'une instance préemptive hébergeant un noeud de travail doit prendre fin, le moteur Kubernetes est avisé. Avant de mettre fin à l'instance de noeud, moteur Kubernetes :
- connecte le noeud de travail pour empêcher le programmateur de kube de placer de nouveaux pods sur ce noeud
- draine le noeud de travail pour expulser les pods en toute sécurité, en s'assurant que les conteneurs du pod se terminent correctement et en effectuant tout nettoyage nécessaire
Une fois qu'une instance préemptive hébergeant un noeud de travail a été arrêtée, Kubernetes Engine tente de créer une nouvelle instance préemptive en tant que instance de remplacement. Si Kubernetes Engine ne peut pas créer une instance préemptive de remplacement après plusieurs tentatives, un message est généré.
Lorsque vous choisissez la capacité préemptive comme type de capacité pour un groupe de noeuds :
- Le moteur Kubernetes ajoute automatiquement une étiquette Kubernetes
oci.oraclecloud.com/oke-is-preemptible=true
aux noeuds de travail hébergés sur des instances préemptives. Vous pouvez utiliser l'étiquette avec les sélecteurs de noeud Kubernetes et l'affinité/anti-affinité de noeud pour contrôler quels pods sont programmés sur ces noeuds de travail. Voir Affectation de pods à des noeuds dans la documentation sur Kubernetes. - Le moteur Kubernetes ajoute automatiquement une teinte Kubernetes
oci.oraclecloud.com/oke-is-preemptible
aux noeuds de travail hébergés sur des instances préemptives. Vous pouvez utiliser la teinte avec les tolérances Kubernetes pour contrôler quels pods sont programmés sur ces noeuds de travail. Voir Taintes et tolérance dans la documentation sur Kubernetes. - Vous pouvez spécifier si les volumes de démarrage attachés aux instances préemptives hébergeant des noeuds de travail sont supprimés définitivement en cas d'arrêt des instances.
Notez ce qui suit :
- La plupart des formes de calcul, mais pas toutes, prennent en charge les instances prêtes à l'emploi. En particulier, il est à noter que les instances préemptives ne sont pas prises en charge par les formes sans système d'exploitation. Vous ne pouvez pas créer un groupe de noeuds avec un type de capacité préemptive si la forme du groupe de noeuds ne prend pas en charge les instances préemptives. De même, vous ne pouvez pas faire passer le type de capacité d'un groupe de noeuds à Capacité préemptive si la forme du groupe de noeuds ne prend pas en charge les instances préemptives.
- Les instances préemptives présentent un certain nombre de limitations et de restrictions. Voir Soutien et limitations.
- Toutes les modifications que vous apportez aux propriétés des noeuds de travail ne s'appliquent qu'aux nouveaux noeuds de travail. La mise à jour du type de capacité associé à un groupe de noeuds n'a pas d'incidence sur les propriétés des noeuds de travail existants.
Politiques IAM requises pour utiliser la capacité préemptive
Les politiques qui vous permettent de créer des instances à l'aide de Kubernetes Engine vous permettent également de créer des instances préemptives. Voir Configuration de politiques pour la création et le déploiement de grappes
Meilleures pratiques lors de l'utilisation de la capacité préemptive
Lorsque vous choisissez la capacité préemptive comme type de capacité pour un groupe de noeuds, tenez compte des meilleures pratiques suivantes :
- Les instances préemptives sont mieux adaptées aux charges de travail en conteneur tolérantes aux pannes. Lors de la conception d'applications pouvant s'exécuter sur des instances préemptives, supposons que la capacité préemptive puisse être récupérée (et que les instances préemptives soient arrêtées) à tout moment.
- Utilisez les sélecteurs de noeuds Kubernetes et l'affinité/anti-affinité de noeud, ainsi que les teintes et tolérances Kubernetes, pour vous assurer que seules les charges de travail tolérantes aux pannes sont programmées pour s'exécuter sur des instances préemptives. Voir Affectation de pods à des noeuds dans la documentation sur Kubernetes.
- Oracle recommande de ne pas spécifier de capacité préemptive comme type de capacité pour le groupe de noeuds principal d'une grappe. À la place, spécifiez uniquement la capacité préemptive pour les groupes de noeuds supplémentaires qui complètent le groupe de noeuds principal de la grappe.
- Oracle recommande d'éviter le cas où un groupe de noeuds comporte une combinaison de types de capacité. Bien qu'une combinaison de types de capacité dans le même groupe de noeuds soit prise en charge, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds. Par exemple, Oracle vous recommande d'effectuer les opérations suivantes :
- éviter de spécifier une capacité sur demande dans un domaine de disponibilité et une capacité préemptive dans un second domaine de disponibilité
- éviter de remplacer le type de capacité de la capacité sur demande par une capacité préemptive lors de l'augmentation d'un groupe de noeuds pour ajouter d'autres noeuds
Utilisation de la console
Création d'une grappe et spécification de la capacité préemptive
- Suivez les instructions pour créer une grappe à l'aide du flux de création personnalisée. Voir Utilisation de la console pour créer une grappe avec des paramètres définis explicitement dans le flux de création personnalisée.
- Lors de la spécification de la configuration de placement pour un groupe de noeuds dans la grappe :
- Spécifiez le premier domaine de disponibilité et sous-réseau :
- Domaine de disponibilité : Sélectionnez le domaine de disponibilité dans lequel placer les noeuds de travail.
- Domaine d'erreur : (Facultatif) Un ou plusieurs domaines d'erreur dans le domaine de disponibilité dans lequel placer les noeuds de travail.
- Sous-réseau : Sélectionnez le sous-réseau configuré pour héberger les noeuds de travail.
-
Sélectionnez Afficher les options avancées et spécifiez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de travail dans le groupe de noeuds :
- Type de capacité : Sélectionnez Capacité préemptive.
- Lorsqu'il est réclamé, supprimer définitivement le volume de démarrage attaché : Choisissez si vous devez supprimer définitivement le volume de démarrage attaché lorsque la capacité est réclamée.
- Facultativement, sélectionnez Autre rangée pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de positionnement. Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds.
- Spécifiez le premier domaine de disponibilité et sous-réseau :
Création d'un groupe de noeuds et spécification de la capacité préemptive
- Dans la page de liste Grappes, sélectionnez le nom de la grappe dans laquelle vous voulez créer un nouveau groupe de noeuds. Si vous avez besoin d'aide pour trouver la page de liste ou la grappe, voir Liste des grappes.
- Sous Ressources, sélectionnez Groupes de noeuds, puis Ajouter un groupe de noeuds pour créer un nouveau groupe de noeuds et spécifier les propriétés requises pour ses noeuds de travail.
- Lors de la spécification de la configuration de placement pour un groupe de noeuds dans la grappe :
- Spécifiez le premier domaine de disponibilité et sous-réseau :
- Domaine de disponibilité : Sélectionnez le domaine de disponibilité dans lequel placer les noeuds de travail.
- Domaine d'erreur : (Facultatif) Un ou plusieurs domaines d'erreur dans le domaine de disponibilité dans lequel placer les noeuds de travail.
- Sous-réseau : Sélectionnez le sous-réseau configuré pour héberger les noeuds de travail.
-
Sélectionnez Afficher les options avancées et spécifiez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de travail dans le groupe de noeuds :
- Type de capacité : Sélectionnez Capacité préemptive.
- Lorsqu'il est réclamé, supprimer définitivement le volume de démarrage attaché : Choisissez si vous devez supprimer définitivement le volume de démarrage attaché lorsque la capacité est réclamée.
- Facultativement, sélectionnez Autre rangée pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de positionnement. Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds.
- Spécifiez le premier domaine de disponibilité et sous-réseau :
Mise à jour d'un groupe de noeuds et spécification de la capacité préemptive
- Dans la page de liste Grappes, sélectionnez le nom de la grappe à modifier. Si vous avez besoin d'aide pour trouver la page de liste ou la grappe, voir Liste des grappes.
- Sous Ressources, sélectionnez Groupes de noeuds, puis sélectionnez le nom du groupe de noeuds à modifier.
- Dans la page Détails du groupe de noeuds, sélectionnez Modifier.
- Lors de la spécification de la configuration de placement pour un groupe de noeuds dans la grappe :
- Spécifiez le premier domaine de disponibilité et sous-réseau :
- Domaine de disponibilité : Sélectionnez le domaine de disponibilité dans lequel placer les noeuds de travail.
- Domaine d'erreur : (Facultatif) Un ou plusieurs domaines d'erreur dans le domaine de disponibilité dans lequel placer les noeuds de travail.
- Sous-réseau : Sélectionnez le sous-réseau configuré pour héberger les noeuds de travail.
-
Sélectionnez Afficher les options avancées et spécifiez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de travail dans le groupe de noeuds :
- Type de capacité : Sélectionnez Capacité préemptive.
- Lorsqu'il est réclamé, supprimer définitivement le volume de démarrage attaché : Choisissez si vous devez supprimer définitivement le volume de démarrage attaché lorsque la capacité est réclamée.
- Facultativement, sélectionnez Autre rangée pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de positionnement. Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds.
- Spécifiez le premier domaine de disponibilité et sous-réseau :
- Enregistrez les modifications.
Utilisation de l'interface de ligne de commande
Pour des informations sur l'utilisation de l'interface de ligne de commande, voir Interface de ligne de commande. Pour une liste complète des indicateurs et les options disponibles pour les commandes de l'interface de ligne de commande, voir Informations de référence sur la ligne de commande.
Création d'un groupe de noeuds et spécification de la capacité préemptive
Pour utiliser l'interface de ligne de commande pour créer un groupe de noeuds qui utilise une capacité préemptive pour provisionner des noeuds de travail, incluez l'argument preemptibleNodeConfig
dans le paramètre --placement-configs
.
Par exemple :
oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd \
--name test-node \
--node-image-id ocid1.image.oc1.iad.aaaaaaaa6______nha \
--compartment-id oocid1.compartment.oc1..aaaaaaaay______t6q \
--kubernetes-version v1.21.5 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"IqDk:US-ASHBURN-AD-2\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva\", \"faultDomains\":[\"FAULT-DOMAIN-3\", \"FAULT-DOMAIN-1\"]}, {\"availability-domain\":\"IqDk:US-ASHBURN-AD-1\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaauhls______bpq\", \"faultDomains\": [\"FAULT-DOMAIN-1\", \"FAULT-DOMAIN-2\"]}]" \
--size 1 \
--region=us-ashburn-1 \
Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds.
Utilisation de l'API
Pour plus d'informations sur l'utilisation de l'API et sur les demandes de signature, voir la documentation de l'API REST et Données d'identification de sécurité. Pour plus d'informations sur les trousses SDK, voir Trousses SDK et interface de ligne de commande.
Utilisez l'attribut placementConfigs
de l'objet nodeConfigDetails
pour spécifier le type de capacité lors de la création ou de la mise à jour de groupes de noeuds.
Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de positionnement d'un groupe de noeuds, vous pouvez spécifier un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de travail du groupe de noeuds aient le même type de capacité pour faciliter la gestion du groupe de noeuds.