Aller au contenu

ConcourseWorkerFailure#

Un ou plusieurs workers concourse sont vus en status stalled.

Vérification avec fly#

fly switch -z <ocb-example> -n main # Ajouter `-c` si le namespace de l'alerte est `concourse`

fly login                         # Cliquer sur le lien proposé pour se connecter via keycloak

fly workers
name                                    containers  platform  tags  team  state    version  age 
caascad-ci-workers-infra-ocb-example-0  0           linux     none  none  stalled  2.3      15d
Alternativement, cette liste peut être vide pour une alerte ConcourseDown.

Vérification des logs de pod concourse-web#

kubectl get pods -n <namespace> -l app=concourse-web
kubectl logs <concourse-web pod> -n <namespace>

Tip

Le namespace peut être concourse ou concourse-infra

Causes possibles#

  • Perte de connectivité entre le pod concourse-web et les VMs des workers

    • S'il y a des HTTP status code 500 dans les logs de concourse-web :
      {"timestamp":"2024-01-02T18:45:13.996722857Z","level":"error","source":"tsa","message":"tsa.connection.channel.command.register.bad-response","data":{"command":"forward-worker","remote":"172.16.0.85:42442","session":"91625807.4.1.21448","status-code":500}}
      
  • Problème avec le service concourse-worker sur la VM

  • Problème système (CPU, mémoire, disque...) sur la VM

Solutions#

Recréation du pod#

Parfois, le problème vient du pod concourse-web malgré des erreurs remontées sur un ou plusieurs workers. Une première étape simple et rapide consiste à supprimer le pod.

Warning

Cette action peut impacter les pipelines en cours d'exécution et rend la page web indisponible quelques minutes.

kswitch <ocb-example>
# NOTE: remplacer `concourse` par `concourse-infra` selon le namespace concerné
kubectl get pods -n concourse -l app=concourse-web
kubectl delete pods -n concourse -l app=concourse-web
# Vérifier que le pod est bien recréé
kubectl get pods -n concourse -l app=concourse-web
NAME                            READY   STATUS    RESTARTS   AGE
concourse-postgresql-0          2/2     Running   0          34d
concourse-postgresql-1          2/2     Running   0          34d
concourse-web-xxxxxxxxx-xxxxx   1/1     Running   0          5m

Investigation sur une VM#

Connexion#

ssh cloud@bst.<ocb-example>.caascad.com
[cloud@bst ~]$ ssh caascad-ci-workers-<client|infra>-<ocb-example>-<0>.<ocb-example>.caascad.com
[cloud@caascad-ci-workers-client-ocb-example-0 ~]$

S'il est impossible de se connecter :

  1. Tenter un redémarrage de la VM via l'UI ou les commandes du cloud provider
  2. Si ça ne suffit pas, reconstruire le worker

Vérification du service#

systemctl status concourse-worker
sudo journalctl -u concourse-worker

En fonction du problème, se référer à la documentation opérationnelle de concourse