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 de 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 sa configuration est en conflit |
|
AddonOperationFailed.ErrApplyingPatch |
Les manifests YAML du module complémentaire sont incompatibles entre les versions |
AddonOperationFailed.ResourceExists
Symptômes
La console affiche une erreur semblable à celle-ci :
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 (telle que 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 en conflit 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 l'espace de noms 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 charges de travail. Ne créez 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
Une fois la ressource supprimée, 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
Une fois les ressources supprimées, 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, sélectionnez Applications > Helm.
Recherchez la version Helm du module complémentaire. Dans la colonne Actions, cliquez sur Delete. Dans la boîte de dialogue, cochez 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, sélectionnez Operations > Event Center.
Sous l'onglet Events (Cluster Resource Events), définissez le champ Level sur Warning, sélectionnez l'espace de noms où le module complémentaire est déployé, et définissez le champ Type sur Pod. Consultez les détails de l'événement pour identifier la cause.
Causes courantes et solutions
Cause 1 : Échec de planification des pods (FailedScheduling)
Les nœuds du cluster ne répondent pas aux exigences de planification des pods du module complémentaire. Vérifiez les détails de l'événement pour les messages suivants :
|
Message d'événement |
Cause |
Solution |
|
|
Les nœuds ne disposent pas de ressources suffisantes |
Supprimez les pods inutiles, ajoutez des nœuds au cluster ou mettez à 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 : Échec de création du bac à sable 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, sélectionnez Workloads > Pods.
Sélectionnez l'espace de noms
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 semblable à celle-ci :
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 de 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 de l'espace de noms 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 l'espace de noms 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 sa configuration est en conflit, généralement en raison d'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, sélectionnez Applications > Helm.
Recherchez la version Helm du module complémentaire. Dans la colonne Actions, cliquez sur Delete. Dans la boîte de dialogue, cochez Clear Release Records et cliquez sur OK.
Installez ou mettez à jour le module complémentaire.
AddonOperationFailed.ErrApplyingPatch
Symptômes
La console affiche une erreur semblable à celle-ci :
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 (telle que 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, ouvrez 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 le message suivant :
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 charges de travail en cours d'exécution. Une mise à jour progressive démarre automatiquement. Une fois terminée, mettez à jour Flannel depuis la console ACK. Consultez la rubrique Composants.