Utilisation de la capacité préemptive pour provisionner des noeuds de processus actif

Découvrez comment spécifier une capacité préemptive pour les instances de calcul hébergeant des noeuds de processus actif dans les pools de noeuds des clusters que vous avez créés à l'aide de Kubernetes Engine (OKE).

Lorsque vous utilisez Kubernetes Engine pour définir la configuration de placement d'un pool de noeuds, vous pouvez indiquer la capacité préemptive comme type de capacité pour les instances de calcul hébergeant des noeuds de processus actif dans le pool de noeuds. La spécification de la capacité préemptive vous permet d'économiser de l'argent en utilisant des instances préemptives pour exécuter les charges globales qui ne doivent être exécutées 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 standard, mais la capacité est récupérée lorsqu'elle est nécessaire ailleurs. Les instances sont alors interrompues. Si les charges globales sont tolérantes aux pannes et aux interruptions, les instances préventives peuvent réduire les coûts. Par exemple, vous pouvez utiliser des instances préemptives pour optimiser les coûts des charges globales pouvant tolérer des interruptions, comme les tests qui peuvent être arrêtés et repris ultérieurement. Pour plus d'informations, reportez-vous à Instances préemptives.

Lorsqu'une instance préemptive hébergeant un noeud de processus actif doit être arrêtée, Kubernetes Engine en est informé. Avant de mettre fin à l'instance de noeud, Kubernetes Engine :

  • connecte le noeud de processus actif pour empêcher le kube-scheduler de placer de nouveaux pods sur ce noeud
  • draine le nœud de travail pour expulser les pods en toute sécurité, en s'assurant que les conteneurs du pod se terminent correctement et effectuent tout nettoyage nécessaire

Une fois qu'une instance préemptive hébergeant un noeud de processus actif a pris fin, Kubernetes Engine tente de créer une instance préemptive en remplacement. Si Kubernetes Engine ne parvient 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 pool de noeuds :

  • Kubernetes Engine ajoute automatiquement un libellé Kubernetes oci.oraclecloud.com/oke-is-preemptible=true aux noeuds de processus actif hébergés sur les instances préemptives. Vous pouvez utiliser le libellé avec les sélecteurs de noeud Kubernetes et l'affinité/anti-affinité de noeud pour contrôler les pods programmés sur ces noeuds de processus actif. Reportez-vous à Affectation de pods aux noeuds dans la documentation Kubernetes.
  • Kubernetes Engine ajoute automatiquement une tâche Kubernetes oci.oraclecloud.com/oke-is-preemptible aux noeuds de processus actif hébergés sur des instances préemptives. Vous pouvez utiliser la maintenance avec les tolérances Kubernetes pour contrôler les pods programmés sur ces noeuds de processus actif. Reportez-vous à Taints and Tolerations dans la documentation Kubernetes.
  • Vous pouvez indiquer si les volumes d'initialisation attachés aux instances préemptives hébergeant des noeuds de processus actif sont supprimés définitivement en cas de terminaison des instances.

Tenez compte des éléments suivants :

  • De nombreuses formes de calcul prennent en charge les instances préemptives, mais pas toutes. En particulier, les instances préemptives ne sont pas prises en charge par les formes Bare Metal. Vous ne pouvez pas créer de pool de noeuds avec un type de capacité de capacité préemptive si la forme du pool de noeuds ne prend pas en charge les instances préemptives. De même, vous ne pouvez pas remplacer le type de capacité d'un pool de noeuds par une capacité préemptive si la forme du pool de noeuds ne prend pas en charge les instances préemptives.
  • Les instances préemptives sont soumises à un certain nombre de limites et de restrictions. Reportez-vous à Support et limites.
  • Les modifications apportées aux propriétés des noeuds de processus actifs ne s'appliquent qu'aux nouveaux noeuds. La mise à jour du type de capacité associé à un pool de noeuds n'a aucune incidence sur les propriétés des noeuds de processus actif existants.

Meilleures pratiques lors de l'utilisation de la capacité préemptive

Lorsque vous choisissez la capacité préemptive comme type de capacité pour un pool de noeuds, tenez compte des meilleures pratiques suivantes :

  • Les instances préemptives sont les mieux adaptées aux charges de travail en conteneur tolérant les 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 noeud Kubernetes et l'affinité/anti-affinité de noeud, ainsi que les taches et les tolérances Kubernetes, pour vous assurer que seules les charges globales tolérantes aux pannes sont programmées pour être exécutées sur des instances préemptives. Reportez-vous à Affectation de pods aux noeuds dans la documentation Kubernetes.
  • Oracle recommande de ne pas spécifier de capacité préemptive comme type de capacité pour le pool de noeuds principal d'un cluster. A la place, spécifiez uniquement la capacité préemptive pour les pools de noeuds supplémentaires qui complètent le pool de noeuds principal du cluster.
  • Oracle vous recommande d'éviter les situations où un pool de noeuds comporte une combinaison de types de capacité. Bien qu'une combinaison de types de capacité dans le même pool de noeuds soit prise en charge, Oracle recommande que tous les noeuds de processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion du pool de noeuds. Par exemple, Oracle vous recommande de :
    • éviter de spécifier une capacité à la demande dans un domaine de disponibilité et une capacité préemptive dans un deuxième domaine de disponibilité
    • éviter de modifier le type de capacité de la capacité à la demande à la capacité préemptive lors de la mise à l'échelle d'un pool de noeuds pour ajouter d'autres noeuds

Utilisation de la console

Création d'un cluster et spécification de la capacité préemptive

  1. Suivez les instructions pour créer un cluster à l'aide du workflow Création personnalisée. Reportez-vous à Utilisation de la console pour créer un cluster avec des paramètres définis explicitement dans le workflow Création personnalisée.
  2. Lorsque vous indiquez la configuration de placement pour un pool de noeuds dans le cluster :
    1. Indiquez le premier domaine de disponibilité et le premier sous-réseau :
      • Domaine de sécurité : sélectionnez le domaine dans lequel placer les noeuds de serveur actif.
      • Domaine de pannes : (facultatif) domaines de pannes du domaine de disponibilité dans lesquels placer les noeuds de processus actif.
      • Sous-réseau : sélectionnez le sous-réseau configuré pour héberger les noeuds de processus actif.
    2. Sélectionnez Afficher les options avancées et indiquez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de processus actifs dans le pool de noeuds :

      • Type de capacité : sélectionnez Capacité préemptive.
      • Lors de la récupération, supprimer définitivement le volume d'initialisation attaché : indiquez si le volume d'initialisation attaché doit être supprimé définitivement lorsque la capacité est récupérée.
    3. Vous pouvez éventuellement sélectionner Autre ligne pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de placement. Si vous indiquez plusieurs domaines de disponibilité dans la configuration de placement d'un pool de noeuds, vous pouvez indiquer un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion des pools de noeuds.

Créer un pool de noeuds et indiquer la capacité préemptive

  1. Ouvrez le menu de navigation et sélectionnez Services de développeur. Sous Conteneurs et artefacts, sélectionnez Clusters Kubernetes (OKE).
  2. Choisissez un compartiment sur lequel vous êtes autorisé à travailler.
  3. Sur la page Liste des clusters, sélectionnez le nom du cluster dans lequel vous souhaitez créer un pool de noeuds.
  4. Sur la page Cluster, affichez l'onglet Pools de nœuds, puis sélectionnez Ajouter le pool de nœuds afin d'en créer un et d'indiquer les propriétés requises pour ses nœuds de processus actif.
  5. Lorsque vous indiquez la configuration de placement pour un pool de noeuds dans le cluster :
    1. Indiquez le premier domaine de disponibilité et le premier sous-réseau :
      • Domaine de sécurité : sélectionnez le domaine dans lequel placer les noeuds de serveur actif.
      • Domaine de pannes : (facultatif) domaines de pannes du domaine de disponibilité dans lesquels placer les noeuds de processus actif.
      • Sous-réseau : sélectionnez le sous-réseau configuré pour héberger les noeuds de processus actif.
    2. Sélectionnez Afficher les options avancées et indiquez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de processus actifs dans le pool de noeuds :

      • Type de capacité : sélectionnez Capacité préemptive.
      • Lors de la récupération, supprimer définitivement le volume d'initialisation attaché : indiquez si le volume d'initialisation attaché doit être supprimé définitivement lorsque la capacité est récupérée.
    3. Vous pouvez éventuellement sélectionner Autre ligne pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de placement. Si vous indiquez plusieurs domaines de disponibilité dans la configuration de placement d'un pool de noeuds, vous pouvez indiquer un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion des pools de noeuds.

Mettre à jour un pool de noeuds et indiquer la capacité préemptive

  1. Ouvrez le menu de navigation et sélectionnez Services de développeur. Sous Conteneurs et artefacts, sélectionnez Clusters Kubernetes (OKE).
  2. Choisissez un compartiment sur lequel vous êtes autorisé à travailler.
  3. Sur la page Liste des groupes, sélectionnez le nom du cluster à modifier.
  4. Sélectionnez Pools de noeuds sous Ressources, puis sélectionnez le nom du pool de noeuds à modifier.
  5. Sur la page Détails du pool de noeuds, sélectionnez Modifier.
  6. Lorsque vous indiquez la configuration de placement pour un pool de noeuds dans le cluster :
    1. Indiquez le premier domaine de disponibilité et le premier sous-réseau :
      • Domaine de sécurité : sélectionnez le domaine dans lequel placer les noeuds de serveur actif.
      • Domaine de pannes : (facultatif) domaines de pannes du domaine de disponibilité dans lesquels placer les noeuds de processus actif.
      • Sous-réseau : sélectionnez le sous-réseau configuré pour héberger les noeuds de processus actif.
    2. Sélectionnez Afficher les options avancées et indiquez que vous souhaitez utiliser des instances préemptives pour provisionner des noeuds de processus actifs dans le pool de noeuds :

      • Type de capacité : sélectionnez Capacité préemptive.
      • Lors de la récupération, supprimer définitivement le volume d'initialisation attaché : indiquez si le volume d'initialisation attaché doit être supprimé définitivement lorsque la capacité est récupérée.
    3. Vous pouvez éventuellement sélectionner Autre ligne pour ajouter des domaines de disponibilité, des sous-réseaux et des types de capacité supplémentaires à la configuration de placement. Si vous indiquez plusieurs domaines de disponibilité dans la configuration de placement d'un pool de noeuds, vous pouvez indiquer un type de capacité différent pour chaque domaine de disponibilité. Toutefois, Oracle recommande que tous les noeuds de processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion des pools de noeuds.
  7. Enregistrer les modifications.

Utilisation de l'interface de ligne de commande

Pour obtenir des informations sur l'utilisation de l'interface de ligne de commande, reportez-vous à Interface de ligne de commande (CLI). Afin d'obtenir la liste complète des indicateurs et des options disponibles pour les commandes de l'interface de ligne de commande, reportez-vous à Référence de ligne de commande.

Créer un pool de noeuds et indiquer la capacité préemptive

Pour utiliser l'interface de ligne de commande afin de créer un pool de noeuds qui utilise une capacité préemptive pour provisionner des noeuds de processus actif, 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 placement d'un pool 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 processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion des pools de noeuds.

Utilisation de l'API

Pour plus d'informations sur l'utilisation de l'API et la signature des demandes, reportez-vous à la documentation relative à l'API REST et à Informations d'identification de sécurité. Pour plus d'informations sur les kits SDK, reportez-vous à Kits SDK et interface de ligne de commande.

Utilisez l'attribut placementConfigs de l'objet nodeConfigDetails pour indiquer le type de capacité lors de la création ou de la mise à jour de pools de noeuds.

Si vous spécifiez plusieurs domaines de disponibilité dans la configuration de placement d'un pool 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 processus actif du pool de noeuds aient le même type de capacité pour faciliter la gestion des pools de noeuds.