Identifiez la cause et la solution pour chaque code d'erreur renvoyé en cas d'échec d'une opération sur un module complémentaire ACK.
Référence des codes d'erreur
|
Code d'erreur |
Description |
|
AddonOperationFailed.ResourceExists |
Une ressource requise par le module complémentaire existe déjà dans le cluster |
|
AddonOperationFailed.ReleaseNameInUse |
Une version Helm portant le même nom que le module complémentaire existe déjà |
|
AddonOperationFailed.WaitForAddonReadyTimeout |
Les pods du module complémentaire n'atteignent pas l'état Ready après la soumission de la demande de mise à jour |
|
AddonOperationFailed.APIServerUnreachable |
ACK ne peut pas accéder au serveur API Kubernetes |
|
AddonOperationFailed.ResourceNotFound |
Les ressources requises par le module complémentaire sont introuvables |
|
AddonOperationFailed.TillerUnreachable |
Le composant Tiller de Helm V2 est inaccessible |
|
AddonOperationFailed.FailedCallingWebhook |
Un webhook de mutation pour une ressource du module complémentaire ne peut pas être appelé |
|
AddonOperationFailed.UserForbidden |
Tiller ne dispose pas des autorisations RBAC (contrôle d'accès basé sur les rôles) requises |
|
AddonOperationFailed.TillerNotFound |
Aucun pod Tiller n'est en cours d'exécution dans le cluster |
|
AddonOperationFailed.ErrPatchingClusterRoleBinding |
Un ClusterRoleBinding requis par le module complémentaire existe mais présente une configuration conflictuelle |
|
AddonOperationFailed.ErrApplyingPatch |
Les manifests YAML du module complémentaire sont incompatibles entre les versions |
AddonOperationFailed.ResourceExists
Symptômes
La console affiche une erreur similaire à :
Addon status not match, failed upgrade helm addon arms-cmonitor for cluster c3cf94b952cd34b54b71b10b7********, err: rendered manifests contain a resource that already exists. Unable to continue with update: ConfigMap "otel-collector-config" in namespace "arms-prom" exists and cannot be imported into the current release
Cause
Une ressource requise par le module complémentaire existe déjà dans le cluster. Causes courantes :
Une autre version (par exemple, la version open source) a été installée via une méthode différente.
Le module complémentaire a été installé avec Helm V2 et ses ressources n'ont pas été supprimées avant la migration vers Helm V3.
Une ressource portant le même nom a été créée manuellement.
Solution
Supprimez les ressources conflictuelles indiquées dans le message d'erreur, puis réessayez l'opération.
Les sections suivantes répertorient les commandes spécifiques à certains modules complémentaires.
arms-prometheus
arms-prometheus est généralement installé dans le namespace arms-prom. Supprimez ses ressources, puis réinstallez arms-prometheus.
kubectl delete ClusterRole arms-kube-state-metrics
kubectl delete ClusterRole arms-node-exporter
kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role
kubectl delete ClusterRole arms-prometheus-oper3
kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role
kubectl delete ClusterRole arms-pilot-prom-k8s
kubectl delete ClusterRoleBinding arms-node-exporter
kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding
kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2
kubectl delete ClusterRoleBinding kube-state-metrics
kubectl delete ClusterRoleBinding arms-pilot-prom-k8s
kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding
kubectl delete Role arms-pilot-prom-spec-ns-k8s
kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system
kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s
kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system
ack-node-local-dns
La suppression n'affecte pas les workloads. N'ajoutez pas de pods entre la suppression et la mise à jour. Si vous le faites, supprimez et recréez ces pods après la mise à jour pour réinjecter le cache DNS.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
Après la suppression de la ressource, mettez à jour ack-node-local-dns.
arms-cmonitor
kubectl delete ConfigMap otel-collector-config -n arms-prom
kubectl delete ClusterRoleBinding arms-prom-cmonitor-role-binding
kubectl delete ClusterRoleBinding arms-prom-cmonitor-install-init-role-binding
kubectl delete ClusterRole arms-prom-cmonitor-role
kubectl delete ClusterRole arms-prom-cmonitor-install-init-role
kubectl delete ServiceAccount cmonitor-sa-install-init -n kube-system
Après la suppression des ressources, installez ou mettez à jour arms-cmonitor.
AddonOperationFailed.ReleaseNameInUse
Cause
Une version Helm portant le même nom existe déjà, ce qui empêche l'installation ou la mise à jour. Causes courantes :
Une autre version a été installée via une méthode différente.
Une version Helm résiduelle subsiste d'une tentative d'installation précédente.
Solution
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters .
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de gauche, choisissez Applications > Helm.
Recherchez la version Helm du module complémentaire. Dans la colonne Actions, cliquez sur Delete. Dans la boîte de dialogue, sélectionnez Clear Release Records et cliquez sur OK.
Installez ou mettez à jour le module complémentaire.
AddonOperationFailed.WaitForAddonReadyTimeout
Cause
Les pods du module complémentaire n'atteignent pas l'état Ready dans le délai imparti après la soumission de la mise à jour.
Dépannage
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de gauche, choisissez Operations > Event Center.
Dans l'onglet Events (Cluster Resource Events), définissez le paramètre Level sur Warning, sélectionnez le namespace où le module complémentaire est déployé et définissez le paramètre Type sur Pod. Examinez les détails de l'événement pour identifier la cause.
Causes courantes et solutions
Cause 1 : Impossible de planifier les pods (FailedScheduling)
Les nœuds du cluster ne répondent pas aux exigences de planification des pods du module complémentaire. Vérifiez les messages suivants dans les détails de l'événement :
|
Message d'événement |
Cause |
Solution |
|
|
Les nœuds ne disposent pas de ressources suffisantes |
Supprimer les pods inutiles, ajouter des nœuds au cluster ou mettre à niveau les configurations des nœuds |
|
|
Les pods du module complémentaire ne tolèrent pas les taints des nœuds |
|
|
|
Les règles d'anti-affinité ne peuvent pas être satisfaites |
Une fois le problème de planification résolu, réessayez la mise à jour du module complémentaire.
Cause 2 : Impossible de créer le sandbox du pod (FailedCreatePodSandBox)
Le plugin réseau ne peut pas allouer d'adresses IP aux pods. Vérifiez les détails de l'événement :
Si le message contient
vSwitch have insufficient IP, ajoutez de nouveaux vSwitch de pod en mode Terway.Si le message contient
transport: Error while dialing, dépannez le pod pour vérifier le plugin réseau du cluster.
AddonOperationFailed.APIServerUnreachable
Cause
ACK ne peut pas atteindre le serveur API Kubernetes, généralement parce que l'instance Server Load Balancer (SLB) exposant le serveur API est mal configurée.
Solution
Consultez la rubrique Dépannage des exceptions de requête du serveur API.
AddonOperationFailed.ResourceNotFound
Cause
Les ressources requises par le module complémentaire sont manquantes, probablement supprimées ou modifiées de manière externe, ce qui empêche la mise à jour sur place.
Solution
Désinstallez le module complémentaire et installez la dernière version.
AddonOperationFailed.TillerUnreachable
Cause
Le module complémentaire utilise Helm V2, qui dépend de Tiller. Tiller a rencontré une erreur et est inaccessible.
Solution
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de gauche, choisissez Workloads > Pods.
Sélectionnez le namespace
kube-system. Recherchez et supprimez le pod tiller. Le système le recrée automatiquement.Une fois que le pod Tiller atteint l'état Ready, réessayez l'opération sur le module complémentaire.
AddonOperationFailed.FailedCallingWebhook
Symptômes
La console affiche une erreur similaire à :
failed to create: Internal error occurred: failed calling webhook "rancher.cattle.io": failed to call webhook: Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/mutation?timeout=10s": no endpoints available for service "rancher-webhook"
Cause
Un webhook de mutation pour une ressource du module complémentaire ne peut pas être appelé, ce qui bloque les mises à jour.
Solution
Corrigez le webhook défaillant identifié dans le message d'erreur, puis réessayez la mise à jour du module complémentaire.
Dans l'exemple, le webhook rancher-webhook dans le namespace cattle-system est indisponible.
AddonOperationFailed.UserForbidden
Cause
Le cluster utilise Helm V2, mais Tiller ne dispose pas des autorisations RBAC nécessaires pour gérer les ressources, ce qui empêche les opérations sur les composants.
Solution
Accordez les autorisations RBAC requises à Tiller. Consultez la documentation Contrôle d'accès basé sur les rôles.
AddonOperationFailed.TillerNotFound
Cause
Le cluster utilise Helm V2, mais aucun pod Tiller n'est en cours d'exécution.
Solution
Dépannez le pod tiller-deploy dans le namespace kube-system. Une fois que le pod fonctionne normalement, réessayez l'opération sur le module complémentaire. Consultez la rubrique Dépannage des problèmes de pod.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Cause
Un ClusterRoleBinding requis par le module complémentaire existe mais présente une configuration conflictuelle, généralement causée par une version open source installée séparément.
Solution
Désinstallez la version du composant open source :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de gauche, choisissez Applications > Helm.
Recherchez la version Helm du module complémentaire. Dans la colonne Actions, cliquez sur Delete. Dans la boîte de dialogue, sélectionnez Clear Release Records et cliquez sur OK.
Installez ou mettez à jour le module complémentaire.
AddonOperationFailed.ErrApplyingPatch
Symptômes
La console affiche une erreur similaire à :
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Cause
Les manifests YAML de la version installée sont incompatibles avec la version cible. Causes courantes :
Une autre version (par exemple, la version open source) a été installée via une méthode différente.
Les manifests YAML du module complémentaire ont été modifiés manuellement.
La version actuellement installée n'est plus prise en charge.
Solution
Modifiez les manifests YAML du composant en fonction du message d'erreur. Pour obtenir de l'aide, soumettez un ticket.
Exemple : Conflit de nom de conteneur Flannel
Si une version obsolète de Flannel est installée, la mise à jour peut échouer avec l'erreur suivante :
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Modifiez le manifest DaemonSet de Flannel :
kubectl -n kube-system edit ds kube-flannel-ds
Recherchez le conteneur install-cni sous spec.template.spec.containers et supprimez-le (lignes 7 à 21 dans l'exemple) :
containers:
- name: kube-flannel
image: registry-vpc.{{.Region}}.aliyuncs.com/acs/flannel:{{.ImageVersion}}
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
...
# Irrelevant lines are not shown. Delete comment lines 7 to 21.
# - command:
# - /bin/sh
# - -c
# - set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf;
# while true; do sleep 3600; done
# image: registry-vpc.cn-beijing.aliyuncs.com/acs/flannel:v0.11.0.1-g6e46593e-aliyun
# imagePullPolicy: IfNotPresent
# name: install-cni
# resources: {}
# terminationMessagePath: /dev/termination-log
# terminationMessagePolicy: File
# volumeMounts:
# - mountPath: /etc/cni/net.d
# name: cni
# - mountPath: /etc/kube-flannel/
# Irrelevant lines are not shown. Delete comment lines 7 to 21.
name: flannel-cfg
...
La suppression de ces lignes n'interrompt pas les workloads en cours d'exécution. Une mise à jour progressive démarre automatiquement. Une fois celle-ci terminée, mettez à jour Flannel depuis la console ACK. Consultez la rubrique Composants.