Consulte la causa y la solución de cada código de error que se devuelve cuando una operación de un complemento de ACK falla.
Referencia de códigos de error
|
Error code |
Description |
|
AddonOperationFailed.ResourceExists |
Un recurso obligatorio para el complemento ya existe en el clúster |
|
AddonOperationFailed.ReleaseNameInUse |
Ya existe una versión de Helm con el mismo nombre que el complemento |
|
AddonOperationFailed.WaitForAddonReadyTimeout |
Los pods del complemento no alcanzan el estado Ready después de enviar la solicitud de actualización |
|
AddonOperationFailed.APIServerUnreachable |
ACK no puede acceder al servidor de API de Kubernetes |
|
AddonOperationFailed.ResourceNotFound |
No se encuentran los recursos obligatorios para el complemento |
|
AddonOperationFailed.TillerUnreachable |
No es posible acceder a Tiller de Helm V2 |
|
AddonOperationFailed.FailedCallingWebhook |
No se puede invocar un webhook de mutación para un recurso del complemento |
|
AddonOperationFailed.UserForbidden |
Tiller no cuenta con los permisos de control de acceso basado en roles (RBAC) necesarios |
|
AddonOperationFailed.TillerNotFound |
No hay ningún pod de Tiller ejecutándose en el clúster |
|
AddonOperationFailed.ErrPatchingClusterRoleBinding |
Existe un ClusterRoleBinding obligatorio para el complemento, pero su configuración genera conflictos |
|
AddonOperationFailed.ErrApplyingPatch |
Los manifiestos YAML del complemento son incompatibles entre versiones |
AddonOperationFailed.ResourceExists
Síntomas
La consola muestra un error similar al siguiente:
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
Causa
Un recurso obligatorio para el complemento ya existe en el clúster. Estas son las causas más comunes:
Se instaló otra versión (por ejemplo, la de código abierto) mediante un método distinto.
El complemento se instaló con Helm V2 y sus recursos no se eliminaron antes de migrar a Helm V3.
Se creó manualmente un recurso con el mismo nombre.
Solución
Elimine los recursos en conflicto que aparecen en el mensaje de error y vuelva a intentar la operación.
A continuación se muestran los comandos correspondientes a complementos específicos.
arms-prometheus
Por lo general, arms-prometheus se instala en el espacio de nombres arms-prom. Elimine sus recursos y reinstale 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 eliminación no afecta a las cargas de trabajo. No agregue pods entre la eliminación y la actualización. Si lo hace, elimínelos y vuélvalos a crear después de actualizar para reinyectar la caché de DNS.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
Una vez eliminado el recurso, actualice 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
Después de eliminar los recursos, instale o actualice arms-cmonitor.
AddonOperationFailed.ReleaseNameInUse
Causa
Ya existe una versión de Helm con el mismo nombre, lo que impide la instalación o la actualización. Las causas más frecuentes son:
Se instaló otra versión mediante un método distinto.
Quedó una versión de Helm residual de un intento de instalación anterior.
Solución
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters .
En la página Clusters, haga clic en el nombre del clúster de destino. En el panel izquierdo, elija Applications > Helm.
Busque la versión de Helm del complemento. En la columna Actions, haga clic en Delete. En el cuadro de diálogo, seleccione Clear Release Records y haga clic en OK.
Instale o actualice el complemento.
AddonOperationFailed.WaitForAddonReadyTimeout
Causa
Los pods del complemento no alcanzan el estado Ready dentro del tiempo de espera tras enviar la actualización.
Solución de problemas
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster de destino. En el panel izquierdo, elija Operations > Event Center.
En la pestaña Events (Cluster Resource Events), establezca Level en Warning, seleccione el espacio de nombres donde se desplegó el complemento y configure Type como Pod. Revise los detalles del evento para identificar la causa.
Causas y soluciones comunes
Causa 1: los pods no se pueden programar (FailedScheduling)
Los nodos del clúster no cumplen con los requisitos de programación de los pods del complemento. Compruebe si los detalles del evento contienen estos mensajes:
|
Event message |
Cause |
Solution |
|
|
Los nodos no tienen recursos suficientes |
Delete unneeded pods, add nodes to the cluster o upgrade node configurations |
|
|
Los pods del complemento no toleran los taints de los nodos |
|
|
|
No se pueden cumplir las reglas de antiafinidad |
Una vez resuelto el problema de programación, vuelva a intentar la actualización del complemento.
Causa 2: no se puede crear el sandbox del pod (FailedCreatePodSandBox)
El plugin de red no logra asignar direcciones IP a los pods. Revise los detalles del evento:
Si el mensaje contiene
vSwitch have insufficient IP, add new pod vSwitches in Terway mode.Si el mensaje contiene
transport: Error while dialing, troubleshoot the pod para comprobar el plugin de red del clúster.
AddonOperationFailed.APIServerUnreachable
Causa
ACK no puede comunicarse con el servidor de API de Kubernetes. Esto suele deberse a una configuración incorrecta de la instancia de Server Load Balancer (SLB) que expone dicho servidor.
Solución
AddonOperationFailed.ResourceNotFound
Causa
Faltan recursos obligatorios del complemento, probablemente porque se eliminaron o modificaron de forma externa. Esta situación impide la actualización en el lugar.
Solución
Desinstale el complemento e instale la versión más reciente.
AddonOperationFailed.TillerUnreachable
Causa
El complemento usa Helm V2, que depende de Tiller. Tiller presentó un error y no es accesible.
Solución
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster de destino. En el panel izquierdo, elija Workloads > Pods.
Seleccione el espacio de nombres
kube-system. Busque y elimine el pod tiller. El sistema lo vuelve a crear automáticamente.Cuando el pod de Tiller alcance el estado Ready, reintente la operación del complemento.
AddonOperationFailed.FailedCallingWebhook
Síntomas
La consola muestra un error similar al siguiente:
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"
Causa
No se puede invocar un webhook de mutación para un recurso del complemento, lo que bloquea las actualizaciones.
Solución
Corrija el webhook con errores que se indica en el mensaje y vuelva a intentar la actualización del complemento.
En el ejemplo, el webhook rancher-webhook del espacio de nombres cattle-system no está disponible.
AddonOperationFailed.UserForbidden
Causa
El clúster utiliza Helm V2, pero Tiller carece de los permisos RBAC necesarios para gestionar recursos. Esto impide las operaciones del componente.
Solución
Otorgue a Tiller los permisos RBAC necesarios. Consulte Control de acceso basado en roles.
AddonOperationFailed.TillerNotFound
Causa
El clúster utiliza Helm V2, pero no hay ningún pod de Tiller ejecutándose.
Solución
Resuelva los problemas del pod tiller-deploy en el espacio de nombres kube-system. Cuando el pod funcione con normalidad, reintente la operación del complemento. Consulte Troubleshoot pod issues.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Causa
Existe un ClusterRoleBinding obligatorio para el complemento, pero su configuración genera conflictos. Por lo general, esto ocurre cuando se instaló por separado una versión de código abierto.
Solución
Desinstale la versión de código abierto del componente:
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster de destino. En el panel izquierdo, elija Applications > Helm.
Busque la versión de Helm del complemento. En la columna Actions, haga clic en Delete. En el cuadro de diálogo, seleccione Clear Release Records y haga clic en OK.
Instale o actualice el complemento.
AddonOperationFailed.ErrApplyingPatch
Síntomas
La consola muestra un error similar al siguiente:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Causa
Los manifiestos YAML de la versión instalada son incompatibles con la versión de destino. Las causas más comunes son:
Se instaló otra versión (por ejemplo, la de código abierto) mediante un método distinto.
Los manifiestos YAML del complemento se modificaron manualmente.
La versión instalada actualmente ya no es compatible.
Solución
Modifique los manifiestos YAML del componente según el mensaje de error. Si necesita ayuda, envíe un ticket.
Ejemplo: conflicto de nombre de contenedor en Flannel
Si tiene instalada una versión discontinuada de Flannel, la actualización podría fallar con este mensaje:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Edite el manifiesto del DaemonSet de Flannel:
kubectl -n kube-system edit ds kube-flannel-ds
Busque el contenedor install-cni dentro de spec.template.spec.containers y elimínelo (líneas 7 a 21 en el ejemplo):
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
...
Eliminar estas líneas no interrumpe las cargas de trabajo en ejecución. Una actualización continua (rolling update) inicia automáticamente. Cuando finalice, actualice Flannel desde la consola de ACK. Consulte Components.