Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Troubleshoot service issues

Última atualização: Jun 27, 2026

Diagnostique e resolva problemas quando serviços com Type=LoadBalancer apresentarem erros de CLB ou falhas de acesso. Consulte Observações sobre balanceamento de carga de serviço.

Pré-requisitos

A versão do componente CCM deve ser V1.9.3.276-g372aa98-aliyun ou posterior (instruções de atualização, notas de versão).

Processo de diagnóstico

Identifique a origem do problema no serviço LoadBalancer.

  1. Identifique o serviço associado à instância de CLB. Substitua XXX.XXX.XXX.XXX pelo endereço IP do balanceador de carga.

    kubectl get svc -A | grep -i LoadBalancer | grep {XXX.XXX.XXX.XXX}

    Um serviço íntegro exibe uma saída semelhante a:

    default   my-svc   LoadBalancer   10.x.x.x   XXX.XXX.XXX.XXX   80:32xxx/TCP   5d
  2. Execute o comando abaixo para verificar se há eventos de erro no serviço.

    kubectl -n {your-namespace} describe svc {your-svc-name}

    Verifique a seção Events na parte inferior. Exemplo de saída de erro:

    Events:
      Type     Reason                  Age   From                Message
      ----     ------                  ---   ----                -------
      Warning  SyncLoadBalancerFailed  2m    service-controller  <error message here>

Eventos de erro de serviço e soluções

Execute kubectl -n {your-namespace} describe svc {your-svc-name} e compare a mensagem de erro na seção Events com a tabela abaixo.

Mensagem de erro Causa Solução
The backend server number has reached to the quota limit of this load balancers A instância de CLB atingiu a cota máxima de 200 servidores de back-end. Adote uma das seguintes medidas: 1. Solicite um aumento de cota na página SLB Quota Management . 2. Defina externalTrafficPolicy: Local para reduzir a quantidade de back-ends. No modo Cluster, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label para limitar os nós de back-end. 3. Crie uma nova instância de CLB.
The loadbalancer does not support backend servers of eni type Instâncias compartilhadas de CLB não suportam back-ends do tipo Elastic Network Interface (ENI). Adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small" para utilizar uma instância de CLB de alto desempenho. Verifique a compatibilidade da versão do CCM. Consulte Usar anotações para configurar uma instância de Classic Load Balancer (CLB).
There are no available nodes for LoadBalancer A instância de CLB não possui servidores de back-end. Verifique o status do pod: <br>- Se nenhum pod corresponder ao serviço, adicione um. <br>- Caso o pod esteja com falha, resolva o problema. Consulte Solucionar problemas de pods. <br>- Se o pod estiver em execução, mas não aparecer como back-end, verifique se ele está em um nó mestre e mova-o para um nó worker.
alicloud: not able to find loadbalancer named [%s] in openapi, but it's defined in service.loaderbalancer.ingress... ou alicloud: can not find loadbalancer, but it's defined in service Não foi possível localizar a instância de CLB referenciada pelo serviço. Pesquise a instância de CLB no console Server Load Balancer usando o EXTERNAL-IP do serviço. <br>- Se o CLB não existir mais e o serviço for desnecessário, exclua-o. <br>- Caso o CLB exista e tenha sido criado manualmente, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id. Consulte Usar anotações para configurar uma instância de Classic Load Balancer (CLB). <br>- Se o CCM criou o CLB, adicione o rótulo kubernetes.do.not.delete à instância de CLB. Consulte Como renomear uma instância de SLB ao usar uma versão anterior do CCM?.
ORDER.ARREARAGE Message: The account is arrearage. A conta possui pagamentos pendentes. Regularize os pagamentos pendentes.
PAY.INSUFFICIENT_BALANCE Message: Your account does not have enough balance. O saldo da conta é insuficiente.

O saldo da sua conta é insuficiente.

Recarregue o saldo da conta.
Status Code: 400 Code: Throttlingxxx A OpenAPI do CLB está sendo limitada (throttling). 1. Verifique sua cota de CLB na página SLB Quota Management. <br>2. Verifique se há erros no serviço e resolva-os: kubectl -n {your-namespace} describe svc {your-svc-name}.
Status Code: 400 Code: RspoolVipExist Message: there are vips associating with this vServer group. O listener vinculado ao grupo vServer não pode ser excluído. 1. Verifique se a anotação do serviço contém um ID de CLB: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: {your-clb-id}. Se presente, o CLB está sendo reutilizado. <br>2. No console de CLB, exclua o listener referente à porta definida no serviço. Consulte Configurar regras de encaminhamento de listener.
Status Code: 400 Code: NetworkConflict A instância de CLB interna está em uma Virtual Private Cloud (VPC) diferente da do cluster. Mova a instância de CLB para a mesma VPC do cluster ou crie uma nova instância de CLB na VPC correta.
Status Code: 400 Code: VSwitchAvailableIpNotExist Message: The specified VSwitch has no available ip. O vSwitch não possui endereços IP disponíveis. Adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}" para especificar um vSwitch diferente na mesma VPC.
The specified Port must be between 1 and 65535. O modo ENI não aceita valores de string para targetPort. Altere targetPort para um número inteiro no YAML do serviço ou atualize o CCM. Consulte Atualizar o componente CCM.
Status Code: 400 Code: ShareSlbHaltSales Message: The share instance has been discontinued. Versões antigas do CCM criam instâncias compartilhadas de CLB por padrão, as quais foram descontinuadas. Atualize o componente CCM.
can not change ResourceGroupId once created O grupo de recursos do CLB não pode ser alterado após a criação da instância. Remova a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:"rg-xxxx" do serviço.
can not find eniid for ip x.x.x.x in vpc vpc-xxxx IP da ENI não encontrado na VPC. A anotação service.beta.kubernetes.io/backend-type: eni está definida, mas o cluster utiliza Flannel, que não suporta o modo ENI. Remova a anotação service.beta.kubernetes.io/backend-type: eni do serviço.
The operation is not allowed because the instanceChargeType of loadbalancer is PayByCLCU. ou User does not have permission modify InstanceChargeType to spec. O método de faturamento do CLB não pode ser alterado de pagamento conforme o uso (PayByCLCU) para pagamento por especificação. Adote uma das seguintes medidas: <br>- Remova a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec. <br>- Se o serviço possuir a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type, defina seu valor como PayByCLCU.
SyncLoadBalancerFailed the loadbalancer xxx can not be reused, can not reuse loadbalancer created by kubernetes. A instância de CLB foi criada pelo CCM e não pode ser reutilizada através da anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id. 1. Localize o ID do CLB na anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id do YAML do serviço. <br>2. Resolva conforme o status do serviço: <br>&nbsp;&nbsp;- Serviço pendente: Substitua o ID do CLB por um criado manualmente no console Classic Load Balancer (CLB). <br>&nbsp;&nbsp;- Serviço não pendente, IP do CLB corresponde ao EXTERNAL-IP do serviço: Exclua a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id. <br>&nbsp;&nbsp;- Serviço não pendente, IP do CLB não corresponde: Localize no console o CLB correspondente ao EXTERNAL-IP do serviço e atualize a anotação. Se não houver correspondência, utilize um ID de CLB criado manualmente e recrie o serviço.
alicloud: can not change LoadBalancer AddressType once created. delete and retry O tipo de instância de CLB não pode ser alterado após a criação. Exclua o serviço e recrie-o.
the loadbalancer lb-xxxxx can not be reused, service has been associated with ip [xxx.xxx.xxx.xxx], cannot be bound to ip [xxx.xxx.xxx.xxx] O serviço está vinculado a uma instância de CLB e não pode ser revinculado apenas alterando a anotação. Exclua o serviço e recrie-o com o ID correto da instância de CLB.

Métodos de solução de problemas

Para problemas que não geram eventos de erro, utilize o guia baseado em sintomas abaixo.

Problema

Sintoma

Solução

Problemas de acesso ao CLB

Distribuição desigual de carga entre back-ends

Distribuição desigual de carga entre back-ends do CLB

Erro 503 durante atualizações de aplicação

Erro 503 durante atualizações de aplicação

CLB inacessível de dentro do cluster

CLB inacessível de dentro do cluster

CLB inacessível de fora do cluster

CLB inacessível de fora do cluster

Erro "The plain HTTP request was sent to HTTPS port"

Impossível conectar ao serviço HTTPS de back-end

Problemas de configuração do CLB

Anotações de serviço não surtem efeito

O que fazer se as anotações de serviço não surtirem efeito?

Configuração do CLB modificada inesperadamente

Por que a configuração da minha instância de CLB foi modificada?

Reutilização de instância existente de CLB não funciona

FAQ de Serviços

Nenhum listener configurado ao reutilizar instância existente de CLB

Por que nenhum listener é configurado ao reutilizar uma instância existente de CLB?

Back-ends do CLB inconsistentes

O que fazer se o grupo vServer do SLB não for atualizado?

Problemas de exclusão do CLB

Instância de CLB excluída inesperadamente

Quando uma instância de SLB é excluída automaticamente?

Instância de CLB não é excluída após a exclusão do serviço

Quando uma instância de SLB é excluída automaticamente?

Distribuição desigual de carga entre back-ends do CLB

Causa: O algoritmo de agendamento do CLB não é adequado ao padrão de tráfego.

Sintoma: Distribuição desigual de requisições entre os servidores de back-end.

Solução:

  • Para serviços com externalTrafficPolicy: Local, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wrr" para usar agendamento round-robin ponderado.

  • Para serviços que utilizam conexões persistentes, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wlc" para agendamento por menor número de conexões ponderado. Isso evita que uma única conexão de longa duração monopolize o tráfego.

Para capturar pacotes de rede de contêineres visando análise de distribuição de carga, consulte este artigo da comunidade Alibaba Cloud Developer.

Erro 503 durante atualizações de aplicação

Causa: A drenagem de conexões ou o encerramento gracioso de pods não estão configurados. Durante atualizações contínuas (rolling updates), o CLB pode rotear tráfego para pods em fase de encerramento.

Sintoma: Erro 503 ao acessar o CLB durante uma atualização de aplicação.

Solução:

  1. Adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain para ativar a drenagem de conexões. Consulte Operações comuns para gerenciar listeners.

  2. Configure readinessProbe e preStop no pod:

    • readinessProbe : Os pods entram nos back-ends do CLB somente após passarem na sonda. Defina a frequência, o atraso e o limiar de falha da sonda para corresponder ao tempo de inicialização da sua aplicação. Timeouts muito curtos causam reinícios repetidos dos pods.

    • preStop e terminationGracePeriodSeconds : Defina preStop para o tempo necessário para sua aplicação drenar as requisições em andamento. Configure terminationGracePeriodSeconds para pelo menos 30 segundos a mais que o preStop.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
    spec:
      containers:
      - name: nginx
        image: nginx
        # Liveness probe
        livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: 5084
          timeoutSeconds: 1
        # Readiness probe
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: 5084
          timeoutSeconds: 1
        # Graceful termination
        lifecycle:
          preStop:
            exec:
              command:
              - sleep
              - 30
      terminationGracePeriodSeconds: 60

CLB inacessível de dentro do cluster

Causa: A opção externalTrafficPolicy: Local está definida no serviço. O kube-proxy encaminha tráfego apenas para pods no mesmo nó de origem da requisição. Se o nó não tiver um pod de back-end para o serviço, a conexão falhará. Isso afeta o tráfego interno do cluster roteado para o endereço do CLB. Consulte kube-proxy adds external-lb address to node-local iptables rule.

Sintoma: O CLB é acessível de fora do cluster, mas as conexões falham quando originadas internamente.

Solução: Utilize uma das seguintes abordagens:

  • Acesso via ClusterIP ou nome do serviço (recomendado para acesso interno): Use o ClusterIP ou o nome DNS do serviço em vez do endereço do CLB. Para Ingress, o nome do serviço é nginx-ingress-lb.kube-system.

  • Alterne para externalTrafficPolicy: Cluster: O tráfego interno alcança o serviço independentemente da localização do pod, mas o IP de origem do cliente não é preservado. Para modificar o serviço de Ingress:

    Com um CLB de Ingress, os pods só conseguem acessar serviços expostos via Ingress/CLB a partir do nó onde o pod do Ingress está em execução.
    kubectl edit svc nginx-ingress-lb -n kube-system
  • Use externalTrafficPolicy: Cluster com passagem direta de ENI (apenas Terway): Se seu cluster usa Terway com ENIs ou múltiplos IPs por ENI, defina externalTrafficPolicy: Cluster e adicione a anotação service.beta.kubernetes.io/backend-type: "eni". Isso preserva o IP de origem e permite o acesso interno. Consulte Usar anotações para configurar uma instância de Classic Load Balancer (CLB).

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/backend-type: eni
      labels:
        app: nginx-ingress-lb
      name: nginx-ingress-lb
      namespace: kube-system
    spec:
      externalTrafficPolicy: Cluster

CLB inacessível de fora do cluster

Causa: Uma ACL bloqueia o IP do cliente, o grupo vServer do CLB não possui back-ends ou a verificação de integridade está falhando.

Sintoma: A instância de CLB não pode ser acessada de fora do cluster.

Solução:

  1. Verifique se há eventos de erro no serviço e resolva-os. Consulte Eventos de erro de serviço e soluções.

    kubectl -n {your-namespace} describe svc {your-svc-name}
  2. Verifique se existe alguma ACL configurada na instância de CLB. Em caso afirmativo, confirme se ela permite tráfego de entrada do IP do cliente. Consulte Resource Access Management.

  3. Verifique se o grupo vServer do CLB está vazio. Se estiver, confirme se há um pod associado ao serviço e em execução. Caso o pod esteja com falha, resolva primeiro o problema do pod. Consulte Solucionar problemas de pods.

  4. Verifique se a verificação de integridade do listener do CLB está passando. Se estiver falhando, confirme se o pod responde corretamente. Consulte FAQ de verificação de integridade do CLB.

Impossível conectar ao serviço HTTPS de back-end

Causa: Com um certificado no listener do CLB, o CLB termina a conexão TLS e encaminha HTTP para os back-ends. Se targetPort apontar para uma porta HTTPS (por exemplo, 443), o pod rejeitará a requisição em texto simples com a mensagem "The plain HTTP request was sent to HTTPS port".

Sintoma: Falha nas conexões de back-end após configurar HTTPS no listener do CLB.

Solução: Defina targetPort para a porta HTTP do pod. Por exemplo, se o Nginx serve HTTPS na porta 443, defina targetPort como 80.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

Próximos passos