Lors du déploiement d'applications sur Red Hat OpenShift, il est utile de vérifier l'état et la santé des composants. Tout d'abord, je vais vous montrer comment fonctionnent les déploiements, puis vous pourrez consulter certains rapports d'état.
Comment les API OpenShift sont déployées
Les applications Red Hat OpenShift peuvent être créées à l'aide d'une image de conteneur hébergée sur un registre distant, d'un fichier YAML qui spécifie les ressources à créer, d'une image de générateur utilisant le code source de votre référentiel Git, d'un Dockerfile, etc.
[ Vous pourriez également aimer : Comment j'ai construit une conférence OpenShift interactive pour la Red Hat Academy. ]
Selon la méthode choisie, un déploiement ou DeploymentConfig L'objet API peut être utilisé. OpenShift prend en charge à la fois le déploiement objets et DeploymentConfig objets; cependant, Déploiement les objets sont recommandés sauf si vous avez besoin d'une fonctionnalité spécifique fournie par DeploymentConfig objets.
Dans OpenShift, lors de la création d'applications à partir d'un fichier YAML, Déploiement les objets sont privilégiés. Lors de la création d'applications à partir d'un Dockerfile ou de la source, un DeploymentConfig l'objet sera créé automatiquement par oc new-app
commande.
Lors du dépannage de DeploymentConfig ou Déploiement API, concentrez-vous sur les états des réplicas et des pods créés. Une configuration de déploiement crée un ReplicationController qui gère les cycles de vie des pods. De la même manière, Déploiement crée des répliques qui gèrent les pods.
Exemple de déploiement MySQL
Cet exemple crée une base de données MySQL à partir d'une image hébergée sur register.access.redhat.com :
oc new-app --docker-image=registry.access.redhat.com/rhscl/mysql-57-rhel7:latest --name=mydb -e MYSQL_USER=user1 -e MYSQL_PASSWORD=mypa55 -e MYSQL_DATABASE=testdb -e MYSQL_ROOT_PASSWORD=r00tpa55
[sysadmin@server ~]$ oc describe dc mydb
Name: mydb
Namespace: DEV
Created: 130 minutes ago
Labels: app=dev
...output omitted...
Deployment #1 (latest):
Name: mydb-1
Created: 15 minutes ago
Status: Complete
Replicas: 1 current / 1 desired
Selector: app=mydb,deployment=mydb-1,deploymentconfig=mydb
Labels: app=mydb,openshift.io/deployment-config.name=mydb
Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed
...output omitted...
Vous pouvez en déduire ce qui suit :
- État :terminé - La configuration de déploiement terminé avec succès.
- Répliques :1 actuelle / 1 souhaitée - Vous vouliez qu'un module soit créé (souhaité) et un autre a été créé avec succès (actuel).
- Statut des pods :1 En cours d'exécution / 0 En attente / 0 Réussi / 0 Échec - Il y a un pod en cours d'exécution sans qu'aucun ne tombe en panne, et c'est très important. Tout pod défaillant doit faire l'objet d'une enquête et être corrigé, car cela signifiera un déploiement non sain.
Déploiement d'applications PHP
Ce deuxième exemple déploye une application PHP, et ceci est une description de la DeploymentConfig :
[sysadmin@server]$ oc describe dc/php-helloworld
Name: php-helloworld
Namespace: web
Created: 12 minutes ago
Labels: app=php-helloworld
Annotations: openshift.io/generated-by=OpenShiftNewApp
Latest Version: 1
Selector: app=php-helloworld,deploymentconfig=php-helloworld
Replicas: 1
Triggers: Config, Image(php-helloworld@latest, auto=true)
Strategy: Rolling
Template:
Labels: app=php-helloworld
deploymentconfig=php-helloworld
...output omitted...
Containers:
php-helloworld:
Image: image-registry.openshift-image-registry.svc:5000/s2i/phphelloworld@
sha256:6d27...b983
Ports: 8080/TCP, 8443/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Deployment #1 (latest):
Name: php-helloworld-1
Created: 5 minutes ago
Status: Complete
Replicas: 3 current / 5 desired
Selector: app=php-helloworld,deployment=php-helloworld-1,deploymentconfig=phphelloworld
Labels: app=php-helloworld,openshift.io/deployment-config.name=php-helloworld
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 2 Failed
...output omitted...
Comme vous pouvez le voir, il y a deux pods défaillants. Cela indique que le déploiement n'est pas sain et doit être examiné. Les administrateurs peuvent afficher les journaux des pods individuels et appliquer le correctif approprié.
[ Apprenez les bases de l'utilisation de Kubernetes dans cet aide-mémoire gratuit. ]
Récapitulez
Lors du dépannage des déploiements, il est toujours important de vérifier l'état du pod, le nombre de réplicas souhaités et le nombre en cours d'exécution. Ces informations peuvent rendre le dépannage plus facile et plus efficace.