Débogage du programme de mise à l'échelle automatique de cluster

Passez en revue les options dont vous disposez pour déboguer le programme de mise à l'échelle automatique de cluster et identifier les causes premières des échecs.

Avant de commencer : accédez à votre cluster Red Hat OpenShift.

Etape 1 : Vérifiez la version

  1. Vérifiez que le module complémentaire « Cluster Autoscaler » est bien installé et opérationnel.
    ibmcloud oc cluster addon ls --cluster CLUSTER_NAME
    
    Exemple de sortie
    Name                 Version   Health State   Health Status   
    cluster-autoscaler   1.0.4     normal         Addon Ready
    
  2. Comparez la version qui s'exécute dans votre cluster avec la version la plus récente du journal des modifications du module complémentaire de mise à l'échelle automatique de cluster.
  3. Si votre version est obsolète, déployez la dernière version du programme de mise à l'échelle de cluster sur votre cluster.

Etape 2 : Vérifiez la configuration

Assurez-vous que le programme de mise à l'échelle automatique de cluster est correctement configuré.

  1. Obtenez le fichier de configuration YAML de la mappe de configuration du programme de mise à l'échelle automatique de cluster.

    oc get cm iks-ca-configmap -n kube-system -o yaml > iks-ca-configmap.yaml
    
  2. Dans la zone data.workerPoolsConfig.json, vérifiez que les pools de noeuds worker corrects sont activés avec la taille minimale et maximale par pool de noeuds worker.

    • "name": "<worker_pool_name>" : le nom de votre pool de nœuds worker dans la mappe de configuration doit être exactement le même que celui de votre cluster. Il convient de séparer les pools de noeuds worker par des virgules. Pour vérifier le nom de vos pools de nœuds worker de cluster, exécutez ibmcloud oc worker-pool ls -c <cluster_name_or_ID>.
    • "minSize": 2 : en général, la valeur de minSize doit être supérieure ou égale à 2.
    • "maxSize": 3 : la valeur de maxSize doit être supérieure ou égale à celle de minSize.
    • "enabled": true : affectez la valeur true au paramètre pour activer la mise à l'échelle automatique du pool de noeuds worker.
    data:
        workerPoolsConfig.json: |
            [{"name": "default", "minSize": 2, "maxSize": 3, "enabled": true }]
    
  3. Dans la zone metadata.annotations.workerPoolsConfigStatus, recherchez un message d'erreur FAILED CODE. Suivez les étapes de reprise figurant dans le message d'erreur. Par exemple, un message semblable à celui présenté ci-après peut être généré. Il indique que vous devez disposer des droits d'accès appropriés au groupe de ressources dans lequel se trouve le cluster.

    annotations:
        workerPoolsConfigStatus: '{"1:3:default":"FAILED CODE: 400
        ...
        \"description\":\"Unable
        to validate the request with resource group manager.\",\"type\":\"Authentication\\"recoveryCLI\":\"To
        list available resource groups, run ''ibmcloud resource groups''. Make sure
        that your cluster and the other IBM Cloud resources that you are trying to use
        are in the same resource group. Verify that you have permissions to work with
        the resource group. If you think that the resource group is set up correctly
        and you still can't use it, contact IBM Cloud support.\"}"}'
    

Etape 3 : Examinez le statut du programme de mise à l'échelle automatique de cluster

Examinez le statut du programme de mise à l'échelle automatique de cluster.

oc describe cm -n kube-system cluster-autoscaler-status
  • status : examinez le message de statut pour plus d'informations sur le traitement des incidents, le cas échéant.
  • Health : examinez la santé globale du programme de mise à l'échelle automatique de cluster et recherchez d'éventuelles erreurs ou d'éventuels incidents.
  • ScaleUp: Faire le point sur l'état d'avancement des activités de déploiement à grande échelle. En règle générale, si le nombre de nœuds de travail prêts et enregistrés correspond, l'extension verticale est en « NoActivity », car votre pool de nœuds de travail dispose d'un nombre suffisant de nœuds de travail.
  • ScaleDown: Faire le point sur l'état d'avancement des activités de réduction d'échelle. Si le programme de mise à l'échelle automatique de cluster identifie NoCandidates, votre pool de noeuds worker n'est pas mis à l'échelle par réduction car aucun des noeuds worker ne peut être retiré sans enlever les ressources demandées de vos charges de travail.
  • Events : examinez les événements pour plus d'informations sur le traitement des incidents, le cas échéant.

Exemple de statut de dispositif de mise à l'échelle automatique de cluster sain

Data
====
status:
----
Cluster-autoscaler status at 2020-02-04 19:51:50.326683568 +0000 UTC:
Cluster-wide:
Health:      Healthy (ready=2 unready=0 notStarted=0 longNotStarted=0 registered=2longUnregistered=0)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleUp:     NoActivity (ready=2 registered=2)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleDown:   NoCandidates (candidates=0)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
Events:  none

Etape 4 : Vérifiez le pod du programme de mise à l'échelle automatique de cluster

Examinez l'intégrité du programme de mise à l'échelle automatique de pod.

  1. Get the cluster autoscaler pod. Si le statut n'est pas En cours d'exécution, décrivez le pod.

    oc get pods -n kube-system | grep ibm-iks-cluster-autoscaler
    
  2. Décrivez le pod du programme de mise à l'échelle automatique de cluster. Consultez la section Events pour obtenir plus d'informations sur le traitement des incidents.

    oc describe pod -n kube-system <pod_name>
    
  3. Consultez la section Command pour vérifier que la configuration de programme de mise à l'échelle automatique de cluster personnalisée correspond à vos attentes, par exemple, avec la valeur scale-down-delay-after-add.

    Command:
        ./cluster-autoscaler
        --v=4
        --balance-similar-node-groups=true
        --alsologtostderr=true
        --stderrthreshold=info
        --cloud-provider=IKS
        --skip-nodes-with-local-storage=true
        --skip-nodes-with-system-pods=true
        --scale-down-unneeded-time=10m
        --scale-down-delay-after-add=10m
        --scale-down-delay-after-delete=10m
        --scale-down-utilization-threshold=0.5
        --scan-interval=1m
        --expander=random
        --leader-elect=false
        --max-node-provision-time=120m
    

Etape 5 : Effectuez des recherches dans les journaux du pod

Recherchez dans les journaux du pod du Cluster Autoscaler les messages pertinents, tels que les messages d'erreur du type « lastScaleDownFailTime », les messages du type « Final scale-up plan » ou les événements liés au Cluster Autoscaler.

Si le pod de l'Autoscaler de votre cluster présente un problème et ne parvient pas à transmettre les journaux, consultez les journaux du pod dans votre instance d' IBM Cloud Logs. Notez que si votre administrateur de cluster n'a pas activé IBM Cloud Logs pour votre cluster, il se peut que vous ne disposiez d'aucun journaux à examiner.

oc logs -n kube-system <pod_name> -c ibm-iks-cluster-autoscaler > logs.txt

Étape 6 : Redémarrer le pod

Si vous ne trouvez pas d'échecs ou de messages d'erreur et que vous avez déjà activé la consignation, redémarrez le pod du programme de mise à l'échelle automatique de cluster. Lors du déploiement, le pod est recréé.

oc delete pod -n kube-system <pod_name>

Etape 6 : Désactivez et réactivez

Facultatif : si vous avez terminé les étapes de débogage et que la mise à l'échelle de votre cluster n'aboutit toujours pas, vous pouvez désactiver et réactiver le programme de mise à l'échelle automatique en éditant la mappe de configuration.

  1. Editez iks-ca-configmap.

    oc edit cm iks-ca-configmap -n kube-system
    

    Exemple de sortie :

    apiVersion: v1
    data:
    workerPoolsConfig.json: |
        [{"name": "default", "minSize": 2, "maxSize": 5, "enabled": true }]
    kind: ConfigMap
    metadata:
    annotations:
        workerPoolsConfigStatus: '{"2:5:default":"SUCCESS"}'
    creationTimestamp: "2020-03-24T17:44:35Z"
    name: iks-ca-configmap
    namespace: kube-system
    resourceVersion: "40964517"
    selfLink: /api/v1/namespaces/kube-system/configmaps/iks-ca-configmap
    uid: 11a1111a-aaaa-1a11-aaa1-aa1aaaa11111
    
  2. Affectez au paramètre enabled la valeur false et sauvegardez vos modifications.

  3. Editez à nouveau iks-ca-configmap. Affectez la valeur true au paramètre activé et sauvegardez vos modifications.

    oc edit cm iks-ca-configmap -n kube-system
    
  4. Si la mise à l'échelle de votre cluster n'aboutit toujours pas après la désactivation et la réactivation du programme de mise à l'échelle automatique de cluster, vous pouvez éditer les paramètres minSize ou maxSize dans iks-ca-configmap. Parfois, l'édition des paramètres de travail minSize et maxSize peuvent redémarrer le programme de mise à l'échelle automatique de cluster.

    oc edit cm iks-ca-configmap -n kube-system
    
  5. Editez les paramètres minSize ou maxSize et sauvegardez vos modifications.

Étape 7 : Vérifiez si le problème est résolu

Surveillez les activités du programme de mise à l'échelle automatique de cluster dans votre cluster pour voir si le problème a été résolu. Si vous avez encore des problèmes, consultez la rubrique Commentaires, questions et support.