Identifique a causa e a solução para cada código de erro retornado quando uma operação de add-on do ACK falha.
Referência de códigos de erro
|
Código de erro |
Descrição |
|
AddonOperationFailed.ResourceExists |
Um recurso necessário para o add-on já existe no cluster |
|
AddonOperationFailed.ReleaseNameInUse |
Já existe uma release do Helm com o mesmo nome do add-on |
|
AddonOperationFailed.WaitForAddonReadyTimeout |
Os pods do add-on não atingem o estado Ready após o envio da solicitação de atualização |
|
AddonOperationFailed.APIServerUnreachable |
O ACK não consegue acessar o servidor de API do Kubernetes |
|
AddonOperationFailed.ResourceNotFound |
Não foi possível encontrar os recursos necessários para o add-on |
|
AddonOperationFailed.TillerUnreachable |
O Tiller do Helm V2 está inacessível |
|
AddonOperationFailed.FailedCallingWebhook |
Não foi possível chamar um webhook de mutação para um recurso do add-on |
|
AddonOperationFailed.UserForbidden |
O Tiller não possui as permissões necessárias de controle de acesso baseado em função (RBAC) |
|
AddonOperationFailed.TillerNotFound |
Nenhum pod do Tiller está em execução no cluster |
|
AddonOperationFailed.ErrPatchingClusterRoleBinding |
Um ClusterRoleBinding necessário para o add-on existe, mas apresenta configuração conflitante |
|
AddonOperationFailed.ErrApplyingPatch |
Os manifestos YAML do add-on são incompatíveis entre as versões |
AddonOperationFailed.ResourceExists
Sintomas
O console exibe um erro semelhante a:
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
Um recurso necessário para o add-on já existe no cluster. Causas comuns:
Outra versão (como a open-source) foi instalada por um método diferente.
O add-on foi instalado com o Helm V2 e seus recursos não foram removidos antes da migração para o Helm V3.
Um recurso com o mesmo nome foi criado manualmente.
Solução
Exclua os recursos conflitantes indicados na mensagem de erro e tente novamente.
As seções a seguir listam comandos para add-ons específicos.
arms-prometheus
O arms-prometheus geralmente é instalado no namespace arms-prom. Exclua seus recursos e reinstale o 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
A exclusão não afeta as cargas de trabalho. Não adicione pods entre a exclusão e a atualização. Caso adicione, exclua e recrie esses pods após a atualização para reinjetar o cache DNS.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
Após excluir o recurso, atualize o 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
Depois de excluir os recursos, instale ou atualize o arms-cmonitor.
AddonOperationFailed.ReleaseNameInUse
Causa
Já existe uma release do Helm com o mesmo nome, o que impede a instalação ou atualização. Motivos frequentes:
Instalação de outra versão por um método diferente.
Restou uma release do Helm de uma tentativa de instalação anterior.
Solução
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel à esquerda, escolha Applications > Helm.
Localize a release do Helm do add-on. Na coluna Actions, clique em Delete. Na caixa de diálogo, selecione Clear Release Records e clique em OK.
Instale ou atualize o add-on.
AddonOperationFailed.WaitForAddonReadyTimeout
Causa
Os pods do add-on não atingem o estado Ready dentro do período de tempo limite após o envio da atualização.
Solução de problemas
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel à esquerda, escolha Operations > Event Center.
Na aba Events (Cluster Resource Events), defina Level como Warning, selecione o namespace onde o add-on está implantado e defina Type como Pod. Analise os detalhes do evento para identificar a causa.
Causas e soluções comuns
Causa 1: Pods não podem ser agendados (FailedScheduling)
Os nós do cluster não atendem aos requisitos de agendamento dos pods do add-on. Verifique se os detalhes do evento contêm estas mensagens:
|
Mensagem do evento |
Causa |
Solução |
|
|
Recursos insuficientes nos nós |
Excluir pods desnecessários, adicionar nós ao cluster ou atualizar configurações de nós |
|
|
Os pods do add-on não toleram as taints dos nós |
|
|
|
Impossibilidade de satisfazer regras de antiafinidade |
Após resolver o problema de agendamento, tente atualizar o add-on novamente.
Causa 2: Sandbox do pod não pode ser criado (FailedCreatePodSandBox)
O plugin de rede não consegue alocar endereços IP para os pods. Verifique os detalhes do evento:
Se a mensagem contiver
vSwitch have insufficient IP, adicione novos vSwitches de pod no modo Terway.Caso a mensagem contenha
transport: Error while dialing, solucione problemas no pod para verificar o plugin de rede do cluster.
AddonOperationFailed.APIServerUnreachable
Causa
O ACK não consegue alcançar o servidor de API do Kubernetes, geralmente porque a instância do Server Load Balancer (SLB) que expõe o servidor de API está configurada incorretamente.
Solução
Consulte Solucionar problemas de exceções em solicitações ao servidor de API.
AddonOperationFailed.ResourceNotFound
Causa
Recursos obrigatórios do add-on estão ausentes — provavelmente excluídos ou modificados externamente —, impedindo a atualização local.
Solução
Desinstale o add-on e instale a versão mais recente.
AddonOperationFailed.TillerUnreachable
Causa
O add-on utiliza o Helm V2, que depende do Tiller. O Tiller encontrou um erro e está inacessível.
Solução
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel à esquerda, escolha Workloads > Pods.
Selecione o namespace
kube-system. Localize e exclua o pod tiller. O sistema o recria automaticamente.Quando o pod do Tiller atingir o estado Ready, tente realizar a operação do add-on novamente.
AddonOperationFailed.FailedCallingWebhook
Sintomas
O console exibe um erro semelhante a:
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
Não foi possível chamar um webhook de mutação para um recurso do add-on, bloqueando as atualizações.
Solução
Corrija o webhook com falha identificado na mensagem de erro e tente atualizar o add-on novamente.
No exemplo, o webhook rancher-webhook no namespace cattle-system está indisponível.
AddonOperationFailed.UserForbidden
Causa
O cluster usa o Helm V2, mas o Tiller não tem permissões RBAC para gerenciar recursos, impedindo operações nos componentes.
Solução
Conceda as permissões RBAC necessárias ao Tiller. Consulte Controle de acesso baseado em função.
AddonOperationFailed.TillerNotFound
Causa
O cluster utiliza o Helm V2, mas nenhum pod do Tiller está em execução.
Solução
Solucione problemas no pod tiller-deploy no namespace kube-system. Após o pod executar normalmente, tente realizar a operação do add-on novamente. Consulte Solucionar problemas de pods.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Causa
Um ClusterRoleBinding necessário para o add-on existe, mas possui uma configuração conflitante, geralmente causada por uma versão open-source instalada separadamente.
Solução
Desinstale a versão open-source do componente:
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel à esquerda, escolha Applications > Helm.
Localize a release do Helm do add-on. Na coluna Actions, clique em Delete. Na caixa de diálogo, selecione Clear Release Records e clique em OK.
Instale ou atualize o add-on.
AddonOperationFailed.ErrApplyingPatch
Sintomas
O console exibe um erro semelhante a:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Causa
Os manifestos YAML da versão instalada são incompatíveis com a versão de destino. Motivos frequentes:
Instalação de outra versão (como a open-source) por um método diferente.
Modificação manual dos manifestos YAML do add-on.
A versão atualmente instalada não é mais suportada.
Solução
Modifique os manifestos YAML do componente com base na mensagem de erro. Para obter assistência, abra um ticket.
Exemplo: Conflito de nome de contêiner do Flannel
Se uma versão descontinuada do Flannel estiver instalada, a atualização poderá falhar com:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Edite o manifesto do DaemonSet do Flannel:
kubectl -n kube-system edit ds kube-flannel-ds
Localize o contêiner install-cni em spec.template.spec.containers e exclua-o (linhas 7–21 no exemplo):
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
...
A exclusão dessas linhas não interrompe as cargas de trabalho em execução. Uma atualização contínua inicia automaticamente. Após a conclusão, atualize o Flannel pelo console do ACK. Consulte Gerenciar componentes.