Configurer les vérifications de l'état des conteneurs pour les pools de nœuds de calcul

Vous pouvez configurer des vérifications de démarrage HTTP, TCP et gRPC, ainsi que des vérifications d'activité HTTP et gRPC pour les pools de nœuds de calcul Cloud Run nouveaux et existants. La configuration varie en fonction du type de vérification.

Cas d'utilisation

Vous pouvez configurer deux types de tests de vérification d'état :

  • Les vérifications d'activité déterminent s'il faut redémarrer un conteneur.

    • Dans ce cas, le redémarrage d'un conteneur peut augmenter la disponibilité du pool de nœuds de calcul en cas de bugs.
    • Les vérifications d'activité sont destinées à redémarrer des instances individuelles qui ne peuvent pas être récupérées d'une autre manière. Elles doivent principalement être utilisées en cas de défaillance d'instance irrécupérable, par exemple pour détecter un interblocage où un pool de nœuds de calcul est en cours d'exécution, mais ne peut pas progresser. Vous pouvez exiger une vérification de l'activité pour chaque conteneur en utilisant des règles d'administration personnalisées.
  • Les vérifications de démarrage déterminent si le conteneur a démarré.

    • Lorsque vous configurez une vérification de démarrage, les vérifications d'activité sont désactivées jusqu'à ce que la vérification de démarrage détermine que le conteneur est démarré, afin d'éviter toute interférence avec le démarrage du pool de nœuds de calcul.
    • Les vérifications de démarrage sont particulièrement utiles si vous utilisez des contrôles d'activité sur des conteneurs à démarrage lent, car elles les empêchent de s'arrêter prématurément avant que les conteneurs ne soient opérationnels.

Sachez que lorsqu'un pool de nœuds de calcul rencontre des échecs répétés de démarrage ou de vérification d'activité, Cloud Run empêche les boucles de plantage non contrôlées en limitant les redémarrages d'instances.

Allocation du processeur

  • Le processeur est toujours alloué lorsque les vérifications s'exécutent.
  • Toutes les vérifications sont facturées pour l'utilisation de la mémoire et des processeurs.

Exigences et comportement de vérification

Type de vérification Conditions requises Comportement
Démarrage TCP Aucun Si cette option est spécifiée, Cloud Run établit une connexion TCP pour ouvrir le socket TCP sur le port spécifié. Si Cloud Run ne parvient pas à établir une connexion, cela indique un échec.

Si une vérification de démarrage n'aboutit pas dans le délai spécifié, Cloud Run arrête le conteneur. Le délai maximal est de 240 secondes, calculé comme suit : failureThreshold * periodSeconds. Vous le définissez lorsque vous configurez la vérification de démarrage pour le pool de nœuds de calcul.
Démarrage HTTP Créez un point de terminaison de vérification d'état HTTP
Utilisez HTTP/1
Une fois la vérification configurée, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification de l'état du pool de nœuds de calcul (par exemple, /ready). Toute réponse comprise entre 200 et 400 est considérée comme réussie. Tout autre élément indique un échec.

Si une vérification de démarrage n'aboutit pas dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, Cloud Run arrête le conteneur.

Si la vérification de démarrage HTTP réussit dans le délai spécifié et que vous avez configuré une vérification d'activité HTTP, Cloud Run démarre la vérification d'activité HTTP.
Activité HTTP Créez un point de terminaison de vérification d'état HTTP
Utilisez HTTP/1
La vérification d'activité ne démarre qu'une fois la vérification de démarrage réussie. Une fois la vérification configurée et la vérification de démarrage réussie, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification de l'état (par exemple, /health). Toute réponse comprise entre 200 et 400 est considérée comme réussie. Tout le reste indique un échec.

Si une vérification d'activité échoue dans le délai spécifié (failureThreshold * periodSeconds), Cloud Run arrête le conteneur à l'aide d'un signal SIGKILL. Toute requête restante encore diffusée par le conteneur est interrompue par le code d'état HTTP 503. Une fois le conteneur arrêté par Cloud Run, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur.
Démarrage gRPC Mettez en œuvre le protocole de vérification de l'état gRPC dans votre pool de nœuds de calcul Cloud Run. Si une vérification de démarrage échoue dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, Cloud Run arrête le conteneur.
Activité gRPC Mettez en œuvre le protocole de vérification de l'état gRPC dans votre pool de nœuds de calcul Cloud Run. Si vous configurez une vérification de démarrage gRPC, la vérification d'activité ne commence qu'une fois la vérification de démarrage réussie.

Une fois la vérification d'activité configurée et toute vérification de démarrage réussie, Cloud Run envoie une requête de vérification d'état au pool de nœuds de calcul.

Si une vérification d'activité échoue dans le délai spécifié (failureThreshold * periodSeconds), Cloud Run arrête le conteneur à l'aide d'un signal SIGKILL. Une fois le conteneur arrêté par Cloud Run, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur.

Configurer des vérifications

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez configurer des vérifications HTTP, TCP et gRPC à l'aide de la console Google Cloud ou de l'API REST Cloud Run :

Console

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Pools de nœuds de calcul dans le menu.

    • Si vous configurez un nouveau pool de nœuds de calcul, cliquez sur Déployer un conteneur.
    • Si vous configurez un pool de nœuds de calcul existant, sélectionnez-le, puis cliquez sur Modifier et déployer la nouvelle révision.
  3. Si vous configurez un nouveau pool de nœuds de calcul, remplissez la page initiale du pool de nœuds de calcul, puis cliquez sur Conteneur(s), Volumes, Mise en réseau, Sécurité pour développer la page de configuration des pools de nœuds de calcul.

  4. Dans la section Conteneur(s) accédez à Vérifications d'état puis cliquez sur Ajouter une vérification d'état afin d'ouvrir le panneau de configuration Ajouter une vérification d'état.

  5. Dans le menu Sélectionner le type de vérification de l'état, sélectionnez le type de vérification de l'état que vous souhaitez ajouter.

  6. Dans le menu Sélectionner un type de vérification, sélectionnez le type de vérification que vous souhaitez utiliser, par exemple HTTP ou gRPC. Le formulaire de configuration de vérification s'affiche.

  7. Configurez les paramètres de la vérification, qui varient selon le type de vérification :

    • Si vous utilisez des vérifications HTTP :

      • Utilisez le champ Chemin d'accès pour spécifier le chemin d'accès relatif au point de terminaison (par exemple, /).

      • Cochez la case En-têtes HTTP pour spécifier des en-têtes personnalisés facultatifs. Spécifiez le nom de l'en-tête dans le champ Nom et la valeur de l'en-tête dans le champ Valeur. Cliquez sur Ajouter un en-tête HTTP pour spécifier d'autres en-têtes.

    • Si vous utilisez des vérifications gRPC, assurez-vous que votre image de conteneur implémente le protocole de vérification d'état gRPC. Pour en savoir plus, consultez Protocole de vérification de l'état gRPC.

    • Pour les types de vérification HTTP et gRPC, spécifiez les éléments suivants :

      • Dans le champ Délai initial, spécifiez le nombre de secondes d'attente après le démarrage du conteneur avant d'effectuer la première vérification. Spécifiez une valeur comprise entre 0 et 240 secondes. La valeur par défaut est de 0 seconde.

      • Dans le champ Période, spécifiez la périodicité (en secondes) à laquelle effectuer la vérification. Par exemple, spécifiez 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 240 secondes. La valeur par défaut est de 10 secondes.

      • Pour Seuil d'échec, spécifiez le nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".

      • Dans le champ Délai avant expiration, spécifiez le nombre de secondes d'attente avant expiration de la vérification. Spécifiez une valeur comprise entre 1 et la plus petite des valeurs entre 240 et periodSeconds. La valeur par défaut est 1.

  8. Cliquez sur Ajouter pour ajouter le nouveau seuil.

  9. Cliquez sur Créer ou Déployer.

API REST

Important : si vous configurez votre pool de nœuds de calcul Cloud Run pour les vérifications HTTP, vous devez également ajouter un point de terminaison de vérification d'état HTTP dans le code de votre pool de nœuds de calcul pour répondre à la vérification. Si vous configurez une vérification gRPC, vous devez également mettre en œuvre le protocole de vérification d'état gRPC dans votre pool de nœuds de calcul Cloud Run.

Démarrage HTTP

Pour configurer cela, utilisez l'API REST.

Activité HTTP

Pour configurer cela, utilisez l'API REST.

Démarrage gRPC

Pour configurer cela, utilisez l'API REST.

Activité gRPC

Pour configurer cela, utilisez l'API REST.

Créer des points de terminaison HTTP de vérification d'état

Si vous configurez votre pool de nœuds de calcul Cloud Run pour une vérification de démarrage HTTP ou une vérification d'activité, vous devez ajouter un point de terminaison dans votre code de pool de nœuds de calcul pour répondre à la vérification. Le point de terminaison peut porter n'importe quel nom, par exemple /startup ou /ready, mais il doit correspondre à la valeur que vous spécifiez pour path dans la configuration de la vérification. Par exemple, si vous spécifiez /ready pour une vérification de démarrage HTTP, spécifiez path dans votre configuration de vérification, comme indiqué ci-dessous :

startupProbe:
  httpGet:
    path: /ready

Les points de terminaison HTTP de vérification d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison HTTP exposés en externe.