Configurer les vérifications d'état des conteneurs (jobs)

Cette page explique comment configurer des vérifications de démarrage HTTP, TCP et gRPC pour les tâches Cloud Run nouvelles et existantes. La configuration varie en fonction du type de vérification.

Cas d'utilisation

Vous pouvez configurer des vérifications d'état de démarrage. Les vérifications de démarrage déterminent si le conteneur a démarré et est prêt à exécuter la tâche.

Lorsqu'un job ne parvient pas à démarrer de manière répétée, Cloud Run limite les redémarrages de tâches pour éviter les boucles de plantage non contrôlées.

Exigences et comportement de vérification

Type de vérification Conditions requises Comportement
Démarrage TCP Aucun Si Cloud Run ne parvient pas à établir une connexion, cela indique un échec.

Si une vérification de démarrage n'aboutit pas dans l'intervalle de temps spécifié, Cloud Run arrête le conteneur. Cet intervalle de temps est calculé comme failureThreshold * periodSeconds et ne peut pas dépasser 240 secondes.
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 d'état de la tâche (par exemple, /ready). Toute réponse comprise entre 200 et 400 est réussie. Tout autre élément indique un échec.

Si une vérification de démarrage échoue dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, le conteneur est arrêté.
Démarrage gRPC Implémentez le protocole de vérification de l'état gRPC dans votre tâche 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, le conteneur est arrêté.

Configurer des vérifications

Configurez des vérifications HTTP, TCP et gRPC à l'aide de la console Google Cloud ou de YAML:

Console

Important: Si vous configurez votre tâche Cloud Run pour les vérifications HTTP, vous devez également ajouter un vérification de l'état d'état HTTP dans votre code de tâche 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 tâche Cloud Run.

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

    Accédez à Cloud Run

  2. Pour créer une tâche, cliquez sur DÉPLOYER UN CONTENEUR, puis sur Tâche. Pour un job existant, cliquez sur l'onglet Jobs (Jobs), cliquez sur le job souhaité, puis sur VIEW AND EDIT JOB CONFIGURATION (AFFICHER ET MODIFIER LA CONFIGURATION DU JOB).

  3. Développez la section Conteneur(s), volumes, mise en réseau, sécurité.

  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 de l'état, sélectionnez le type de démarrage de la vérification de l'état.

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

  7. Notez que la configuration de vérification varie selon le type de vérification. Configurez les paramètres de la 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 ensuite 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.
    • Pour Port, spécifiez le port sur lequel le conteneur de tâche écoute la sonde.
    • 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 l'intervalle de temps (en secondes) à laquelle effectuer la vérification. Par exemple, 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 à effectuer 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. Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
  8. Cliquez sur Ajouter pour ajouter le nouveau seuil.

YAML

Important: si vous configurez votre tâche Cloud Run pour les vérifications HTTP, vous devez également ajouter un point de terminaison dans le code de votre tâche 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 tâche Cloud Run.

Démarrage TCP

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: JOB
    spec:
     template:
       metadata:
       spec:
         containers:
         - image: IMAGE_URL
           startupProbe:
             tcpSocket:
               port: CONTAINER_PORT
             initialDelaySeconds: DELAY
             timeoutSeconds: TIMEOUT
             failureThreshold: THRESHOLD
             periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre tâche Cloud Run
    • IMAGE_URL par l'URL de l'image du conteneur de la tâche (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest).
    • Facultatif: CONTAINER_PORT avec le port sur lequel le conteneur de tâche écoute la sonde.
    • DELAY par 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • Facultatif: TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur. La valeur par défaut est "3".
    • PERIOD par le délai (en secondes) auquel effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Démarrage HTTP

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre tâche Cloud Run
    • IMAGE_URL par l'URL de l'image du conteneur de la tâche (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest).
    • PATH par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • Facultatif: CONTAINER_PORT avec le port sur lequel le conteneur de tâche écoute la sonde.
    • Facultatif: httpHeaders peut être utilisé pour fournir des en-têtes personnalisés multiples ou répétés à l'aide des champs HEADER_NAME et HEADER_VALUE, comme indiqué.
    • Facultatif: DELAY par 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • Facultatif: TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • Facultatif: THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Facultatif: PERIOD par la période (en secondes) à laquelle effectuer la vérification. Par exemple, 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.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Démarrage gRPC

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre tâche Cloud Run
    • IMAGE_URL par l'URL de l'image du conteneur de la tâche (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest).
    • Facultatif : GRPC_SERVICE. Si défini, il est utilisé dans le champ de service de grpc.health.v1.HealthCheckRequest lorsque l'appel RPC grpc.health.v1.Health.Check est effectué.
    • Facultatif: CONTAINER_PORT avec le port sur lequel le conteneur de tâche écoute la sonde.
    • Facultatif: DELAY par 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.
    • Facultatif: TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • Facultatif: THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Facultatif: PERIOD par la période (en secondes) à laquelle effectuer la vérification. Par exemple, 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.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

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

Si vous configurez votre tâche Cloud Run pour une vérification de démarrage HTTP, vous devez ajouter un point de terminaison dans votre code de tâche pour répondre à la vérification. Vous pouvez utiliser n'importe quel nom pour le point de terminaison, par exemple /startup ou /ready. Le nom doit correspondre aux valeurs que vous spécifiez pour path dans la configuration de la sonde. 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