Ce document présente des techniques de dépannage pour les déploiements Endpoints sur Google Kubernetes Engine (GKE) et Kubernetes.
Message d'erreur "Failed in kubectl create -f gke.yaml
"
Si vous rencontrez le message d'erreur Failed in kubectl create -f gke.yaml
, procédez comme suit :
Autorisez
gcloud
:gcloud auth login gcloud auth application-default login
Créez un cluster. Vous pouvez utiliser la commande
gcloud
suivante ou créer un cluster à l'aide de la console Google Cloud.gcloud container clusters create CLUSTER_NAME
Remplacez
CLUSTER_NAME
par le nom de votre cluster.Obtenez des identifiants pour votre cluster et mettez-les à la disposition de
kubectl
:gcloud container clusters get-credentials CLUSTER_NAME
Les métriques et les journaux de Cloud Endpoints ne sont pas affichés
Si vous pouvez envoyer des requêtes à votre API, mais que les métriques et les journaux ne s'affichent pas sur la page Endpoints > Services de la console Google Cloud, procédez comme suit :
- Vérifiez que tous les services requis sont activés.
- Vérifiez que toutes les autorisations requises sont accordées.
Accéder aux journaux d'Extensible Service Proxy
Si vous devez accéder aux journaux d'Extensible Service Proxy (ESP) pour diagnostiquer les problèmes, utilisez kubectl
comme suit :
Récupérez le nom du pod :
kubectl get pod NAME READY STATUS RESTARTS AGE esp-echo-174578890-x09gl 2/2 Running 2 21s
Le nom du pod est
esp-echo-174578890-x09gl
. Il comporte deux conteneurs :esp
etecho
.Pour afficher les journaux dans un pod, utilisez
kubectl logs
:kubectl logs POD_NAME -c CONTAINER_NAME
Où
POD_NAME
etCONTAINER_NAME
sont les valeurs renvoyées par la commandekubectl get pod
à l'étape précédente. Exemple :kubectl logs esp-echo-174578890-x09gl -c esp
Vérifier le nom du service
Si vous rencontrez le message d'erreurFetching service config failed
, vérifiez que le nom du service que vous avez spécifié dans le champ --service
de votre fichier manifeste de déploiement (appelé deployment.yaml
) correspond au nom d'hôte spécifié dans la propriété name
de votre fichier YAML de configuration de l'API gRPC (appelé api_config.yaml
).
Si le fichier deployment.yaml
comporte un nom incorrect :
Ouvrez le fichier
deployment.yaml
, puis allez à la section configurée pour le conteneur ESP. Exemple :containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
Modifiez
SERVICE_NAME
afin qu'il corresponde au nom d'hôte spécifié dans la propriéténame
du fichierapi_config.yaml
, puis enregistrez le fichierdeployment.yaml
.Démarrez le service Kubernetes :
kubectl create -f deployment.yaml
Si le fichier api_config.yaml
comporte un nom incorrect :
Obtenez le nom du service pour lequel Endpoints est configuré.
Supprimez le service :
gcloud endpoints services delete SERVICE_NAME
Remplacez
SERVICE_NAME
par le nom récupéré à l'étape précédente. Il faut 30 jours pour que le service soit supprimé de Google Cloud. Vous ne pourrez pas réutiliser le nom du service pendant ce laps de temps.Ouvrez
api_config.yaml
et corrigez le nom d'hôte dans la propriéténame
, puis enregistrez le fichier.Déployez la configuration de service mise à jour :
gcloud endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml
Attendez que la configuration du service soit déployée avec succès.
Démarrez le service Kubernetes :
kubectl create -f deployment.yaml
Vérifier les fichiers de configuration
Utilisez
ssh
pour vous connecter au pod à l'aide dekubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Remplacez
CONTAINER_NAME
par le nom de votre conteneur etPOD_NAME par celui de votre pod .Dans le répertoire
etc/nginx/endpoints/
, recherchez des erreurs dans les fichiers de configuration suivants :nginx.conf
: fichier de configurationnginx
avec les directives ESPservice.jso
: fichier de configuration du service
Accéder à la page d'état de Cloud Endpoints
Si vous avez défini rollout_strategy
sur managed
lorsque vous avez démarré ESP et que vous recherchez l'ID de configuration utilisé par une instance ESP, vous devez consulter la page d'état de Cloud 'Endpoints.
Pour accéder à la page d'état de Cloud Endpoints :
Utilisez
ssh
pour vous connecter au pod à l'aide dekubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Remplacez
CONTAINER_NAME
par le nom de votre conteneur etPOD_NAME
par celui de votre pod.Installez
curl
.Saisissez les chaînes suivantes :
curl http://localhost:8090/endpoints_status
Un résultat semblable au suivant s'affiche :
"serviceConfigRollouts": { "rolloutId": "2017-08-09r27", "percentages": { "2017-08-09r26": "100" } }
La valeur de rolloutId
est l'ID de configuration de service utilisé par ESP. Pour vous assurer qu'ESP utilise la même configuration que Cloud Endpoints, consultez la page Obtenir le nom du service et l'ID de configuration.