Débogage de déploiements d'application
Cloud privé virtuel Infrastructure classique
Passez en revue les options dont vous disposez pour déboguer vos déploiements d'application et identifier les causes premières des échecs.
Avant de commencer, assurez-vous que vous avez le rôle d'accès au service IAM Writer ou Manager IBM Cloud pour l'espace de noms dans lequel votre application est déployée.
-
Veillez à passer en revue les scénarios courants ci-après. Vous devrez peut-être modifier vos applications afin de pouvoir les déployer sur des clusters Red Hat OpenShift.
-
Recherchez les anomalies dans les ressources de service ou de déploiement en exécutant la commande
describe.oc describe service <service_name> -
Vérifiez si les conteneurs sont bloqués à l'état
ContainerCreating. -
Vérifiez si le cluster est à l'état critique (
Critical). S'il est à l'étatCritical, consultez les règles de pare-feu et vérifiez que le maître peut communiquer avec les noeuds worker. -
Vérifiez que le service est à l'écoute sur le port correct.
- Obtenez le nom d'un pod.
oc get pods - Connectez-vous à un conteneur.
oc exec -it <pod_name> -- /bin/bash - Exécutez la commande curl pour l'application à partir du conteneur. Si le port n'est pas accessible, il se peut que le service ne soit pas à l'écoute sur le port approprié ou que l'application comporte des erreurs. Mettez à jour le fichier
de configuration du service avec le port correct et redéployez-le, ou examinez les problèmes potentiels de l'application.
curl localhost:<port>
- Obtenez le nom d'un pod.
-
Vérifiez que le service est lié correctement aux pods.
- Obtenez le nom d'un pod.
oc get pods - Connectez-vous à un conteneur.
oc exec -it <pod_name> -- /bin/bash - Exécutez la commande curl sur l'adresse IP et le port du cluster du service.
curl <cluster_IP>:<port> - Si l'adresse IP et le port ne sont pas accessibles, examinez les noeuds finaux du service.
- S'il n'y a aucun noeud final répertorié, le sélecteur du service ne trouve pas de correspondance avec les pods. Par exemple, votre déploiement d'application peut être libellé
app=foo, mais le service peut avoir le sélecteurrun=foo. - S'il y a des noeuds finaux répertoriés, examinez la zone du port cible sur le service et assurez-vous que ce port est identique à celui utilisé pour les pods. Par exemple, votre application peut être en mode écoute sur le port 9080, mais le service peut être en mode écoute sur le port 80.
- S'il n'y a aucun noeud final répertorié, le sélecteur du service ne trouve pas de correspondance avec les pods. Par exemple, votre déploiement d'application peut être libellé
- Obtenez le nom d'un pod.
-
Pour les services Ingress, vérifiez que le service est accessible depuis le cluster.
- Obtenez le nom d'un pod.
oc get pods - Connectez-vous à un conteneur.
oc exec -it <pod_name> -- /bin/bash - Exécutez la commande curl sur l'URL indiquée pour le service Ingress. Si l'URL n'est pas accessible, recherchez une erreur de pare-feu entre le cluster et le noeud final externe.
curl <host_name>.<domain>
- Obtenez le nom d'un pod.