Les vérifications de l'état Cloud Run permettent de s'assurer que vos instances de conteneur s'exécutent correctement et sont en mesure de diffuser du trafic. Les vérifications de l'état Cloud Run vous permettent de personnaliser le moment où votre conteneur est prêt à recevoir des requêtes et le moment où il doit être considéré comme non opérationnel et nécessiter un redémarrage.
Cas d'utilisation
Vous pouvez configurer les types de vérification de l'état'état suivants :
- Les vérifications de démarrage déterminent si le conteneur a démarré et est prêt à accepter le trafic.
- 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é de l'instance 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ù une instance est en cours d'exécution, mais ne peut pas progresser. Vous pouvez exiger une vérification de l'activité pour chaque conteneur à l'aide de règles d'administration personnalisées.
- Lorsqu'une instance rencontre des échecs répétés de vérification, Cloud Run limite les redémarrages d'instances pour éviter les boucles de plantage non contrôlées.
Vérifications de préparation (preview)
Les vérifications d'aptitude déterminent à quel moment une instance de votre instance Cloud Run doit diffuser du trafic. Les vérifications d'aptitude commencent une fois la vérification de démarrage du conteneur réussie. Si une instance échoue à sa vérification de l'état de préparation au-delà du seuil d'échec que vous configurez, Cloud Run cesse de lui envoyer du trafic. Cloud Run ne met pas fin à l'instance et renvoie le trafic vers celle-ci lorsqu'elle recommence à réussir sa vérification de l'état de préparation.
Votre conteneur doit implémenter les vérifications de démarrage, d'activité et d'aptitude de manière cohérente. Une fois la vérification de démarrage réussie, Cloud Run considère que votre conteneur est prêt à diffuser du trafic.
Nous vous recommandons d'encapsuler votre logique afin que la vérification du démarrage tienne compte de l'état de préparation. Étant donné que Cloud Run peut acheminer le trafic vers une nouvelle instance avant la fin de la première vérification de l'état de préparation, assurez-vous que la réussite de la vérification du démarrage garantit également la capacité à diffuser le trafic en toute sécurité immédiatement. Lorsque la vérification de démarrage réussit, nous considérons que le conteneur est prêt à recevoir du trafic.
Configurer des vérifications de démarrage
Vous pouvez configurer des vérifications HTTP, TCP et gRPC à l'aide de la Google Cloud CLI ou de YAML :
gcloud
Démarrage TCP
Exécutez la commande suivante :
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY : 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.
- TIMEOUT (facultatif) : 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 : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- PERIOD : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour 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.
Démarrage HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
Exécutez la commande suivante :
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH : chemin relatif au point de terminaison HTTP, par exemple,
/health. - CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
- PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour 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.
Démarrage gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
Exécutez la commande suivante :
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
- PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour 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.
YAML
Démarrage TCP
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
startupProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY : 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.
- TIMEOUT (facultatif) : 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 : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- PERIOD : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour 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.
-
Créez ou mettez à jour l'instance à l'aide de la commande suivante :
gcloud beta run instances replace instance.yaml
Démarrage HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
startupProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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 éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH : chemin relatif au point de terminaison HTTP, par exemple,
/health. - CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- Facultatif :
httpHeaderspeut ê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é. - TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
- PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour 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.
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Démarrage gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
startupProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
- PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour 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.
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Vérification de démarrage TCP par défaut
Si vous ne configurez pas explicitement de vérification de démarrage TCP pour une nouvelle instance Cloud Run, Cloud Run en configure automatiquement une avec les valeurs par défaut suivantes :
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
Vous pouvez modifier ces valeurs par défaut en suivant les instructions de la section Configuration de la vérification sur la présente page.
Exigences et comportement de la vérification au démarrage
| Type de vérification | Conditions requises | Comportement |
|---|---|---|
| Démarrage TCP | Aucune | Par défaut, 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é ( failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, le conteneur est arrêté. Consultez également la section Valeurs TCP par défaut. |
| Démarrage HTTP | Créez un point de terminaison de vérification de l'état 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 l'état (par exemple, /health). Toute réponse 2XX ou 3XX 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, le conteneur est arrêté. |
| Démarrage gRPC | Mettez en œuvre le protocole de vérification d'état gRPC dans votre instance 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 d'activité
Vous pouvez configurer des vérifications HTTP et gRPC à l'aide de Google Cloud SDK ou de YAML :
gcloud
Activité HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
Exécutez la commande suivante :
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH : chemin relatif au point de terminaison HTTP, par exemple,
/health. - CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1. - Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.
Activité gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
Exécutez la commande suivante :
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1. - Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.
YAML
Activité HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
-
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
livenessProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH : chemin relatif au point de terminaison HTTP, par exemple,
/health. - CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- Facultatif :
httpHeaderspeut ê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. TIMEOUT : 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 3 600.La valeur par défaut est 1. - Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.
-
Créez ou mettez à jour l'instance à l'aide de la commande suivante :
gcloud beta run instances replace instance.yaml
Activité gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
-
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
livenessProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
- DELAY (facultatif) : 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.
- THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
- Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1. - Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.
-
Créez ou mettez à jour l'instance à l'aide de la commande suivante :
gcloud beta run instances replace instance.yaml
Exigences et comportement de la vérification d'activité
| Type de vérification | Conditions requises | Comportement |
|---|---|---|
| Activité HTTP | Créez un point de terminaison de vérification de l'état 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 l'état (par exemple, /health). Toute réponse 2XX ou 3XX 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), le conteneur est arrêté à 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é, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur. |
| Activité gRPC | Mettez en œuvre le protocole de vérification d'état gRPC dans votre instance 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 de l'état d'état à l'instance. Si une vérification d'activité échoue dans le délai spécifié ( failureThreshold * periodSeconds), le conteneur est arrêté à l'aide d'un signal SIGKILL. Une fois le conteneur arrêté, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur. |
Configurer des vérifications d'aptitude
Les limites suivantes s'appliquent aux sondes de disponibilité :- Si vous activez l'affinité de session, Cloud Run continue d'envoyer des requêtes à la même instance, même si son test d'aptitude échoue.
Vous pouvez configurer une vérification de disponibilité à l'aide de Google Cloud CLI ou de YAML :
gcloud
Compatibilité HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
Exécutez la commande suivante :
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH (facultatif) : chemin relatif au point de terminaison HTTP, par exemple
/are_you_ready. Le chemin par défaut est/. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
- SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
- FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
- TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1. - PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.
Préparation de gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
Exécutez la commande suivante :
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
- GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
- FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
- TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1. - PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.
YAML
Compatibilité HTTP
Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.
-
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
readinessProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - PATH (facultatif) : chemin relatif au point de terminaison HTTP, par exemple
/are_you_ready. Le chemin par défaut est/. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
- SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
- FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
- TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1. - PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.
-
Créez ou mettez à jour l'instance à l'aide de la commande suivante :
gcloud beta run instances replace instance.yaml
Préparation de gRPC
Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.
-
Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
gcloud beta run instances describe INSTANCE --format export > instance.yaml
Configurez l'attribut
readinessProbecomme indiqué ci-dessous :apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
Remplacez les éléments suivants :
- INSTANCE : nom de votre instance Cloud Run.
- IMAGE_URL : référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
- GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de
grpc.health.v1.HealthCheckRequestlorsque le RPCgrpc.health.v1.Health.Checkest appelé. - SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
- FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
- TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1. - PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification.
Par exemple,
2pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.
-
Créez ou mettez à jour l'instance à l'aide de la commande suivante :
gcloud beta run instances replace instance.yaml
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, mais il n'y a pas de frais basés sur les requêtes.
Étapes suivantes
- Découvrez comment configurer un protocole de vérification de l'état gRPC.