Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Troubleshoot service issues

Última atualização: Sep 12, 2026

Diagnostique e resolva problemas quando services do tipo Type=LoadBalancer apresentarem erros de CLB ou falhas de acesso. Consulte Service load balancing notes.

Pré-requisitos

A versão do componente CCM deve ser V1.9.3.276-g372aa98-aliyun ou posterior (upgrade instructions, release notes).

Processo de diagnóstico

Identifique a origem do problema no service LoadBalancer.

  1. Localize o service 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 service í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 service.

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

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

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

Eventos de erro do service 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 medidas a seguir: 1. Solicite 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 aceitam back-ends do tipo Elastic Network Interface (ENI). Adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small" para usar uma instância de CLB de alto desempenho. Verifique a compatibilidade da versão do CCM. Consulte Use annotations to configure a Classic Load Balancer (CLB) instance.
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 service, adicione um. <br>- Caso o pod esteja com problemas de integridade, resolva a questão. Consulte Troubleshoot pod issues. <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 service. Pesquise a instância de CLB no Server Load Balancer console usando o EXTERNAL-IP do service. <br>- Se o CLB não existir mais e o service 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 Use annotations to configure a Classic Load Balancer (CLB) instance. <br>- Se o CCM criou o CLB, adicione o rótulo kubernetes.do.not.delete à instância de CLB. Consulte How do I rename an SLB instance if I am using an earlier version of 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 service e corrija-os: kubectl -n {your-namespace} describe svc {your-svc-name}.
Status Code: 400 Code: RspoolVipExist Message: there are vips associating with this vServer group. Não é possível excluir o listener vinculado ao grupo vServer. 1. Verifique se a anotação do service 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 service. Consulte Configure listener forwarding rules.
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 do tipo string para targetPort. Altere targetPort para um número inteiro no YAML do service ou atualize o CCM. Consulte Upgrade the CCM component.
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. Upgrade the CCM component.
can not change ResourceGroupId once created Não é possível alterar o grupo de recursos do CLB 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 service.
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 oferece suporte ao modo ENI. Remova a anotação service.beta.kubernetes.io/backend-type: eni do service.
The operation is not allowed because the instanceChargeType of loadbalancer is PayByCLCU. ou User does not have permission modify InstanceChargeType to spec. Não é possível alterar o método de faturamento do CLB de pagamento conforme o uso (PayByCLCU) para pagamento por especificação. Adote uma das medidas a seguir: <br>- Remova a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec. <br>- Caso o service possua 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. O CCM criou a instância de CLB e não é possível reutilizá-la por meio 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 no YAML do service. <br>2. Resolva conforme o status do service: <br>&nbsp;&nbsp;- Service pendente: Substitua o ID do CLB por um criado manualmente no Classic Load Balancer (CLB) console. <br>&nbsp;&nbsp;- Service não pendente e IP do CLB corresponde ao EXTERNAL-IP do service: Remova a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id. <br>&nbsp;&nbsp;- Service não pendente e IP do CLB não corresponde: Localize no console o CLB correspondente ao EXTERNAL-IP do service e atualize a anotação. Se não houver correspondência, use um ID de CLB criado manualmente e recrie o service.
alicloud: can not change LoadBalancer AddressType once created. delete and retry Não é possível alterar o tipo da instância de CLB após a criação. Exclua o service 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 service está vinculado a uma instância de CLB e não é possível revinculá-lo apenas alterando a anotação. Exclua o service 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 a seguir.

Problema

Sintoma

Solução

Problemas de acesso ao CLB

Distribuição desigual de carga entre os back-ends

Uneven load distribution across CLB backends

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

503 error during application updates

CLB inacessível de dentro do cluster

CLB inaccessible from within the cluster

CLB inacessível de fora do cluster

CLB inaccessible from outside the cluster

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

Cannot connect to the backend HTTPS service

Problemas de configuração do CLB

Anotações do service não surtem efeito

What do I do if service annotations do not take effect?

Configuração do CLB modificada inesperadamente

Why is the configuration of my CLB instance modified?

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

Service FAQ

Nenhum listener configurado ao reutilizar uma instância de CLB existente

Why is no listener configured when I reuse an existing CLB instance?

Back-ends do CLB inconsistentes

What do I do if the SLB vServer group is not updated?

Problemas de exclusão do CLB

Instância de CLB excluída inesperadamente

When is an SLB instance automatically deleted?

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

When is an SLB instance automatically deleted?

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 services com externalTrafficPolicy: Local, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wrr" para usar o agendamento weighted round-robin.

  • Para services que utilizam conexões persistentes, adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wlc" para aplicar o agendamento weighted least connections. Isso evita que uma única conexão de longa duração monopolize o tráfego.

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

Causa: O draining de conexões ou o encerramento graceful do pod não estão configurados. Durante atualizações rolling, o CLB pode rotear tráfego para pods em fase de encerramento.

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

Solução:

  1. Adicione a anotação service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain para ativar o draining de conexões. Consulte Common operations to manage listeners.

  2. Configure readinessProbe e preStop no pod:

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

    • preStop e terminationGracePeriodSeconds : Defina preStop como 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 service. O kube-proxy encaminha o 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 service, 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 externamente ao cluster, mas as conexões falham quando originadas internamente.

Solução: Utilize uma das abordagens a seguir:

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

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

    Com um CLB de Ingress, os pods só conseguem acessar services 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 o seu cluster utiliza Terway com ENIs ou múltiplos IPs por ENI, defina externalTrafficPolicy: Cluster e adicione a anotação service.beta.kubernetes.io/backend-type: "eni". Essa configuração preserva o IP de origem e permite o acesso interno. Consulte Use annotations to configure a Classic Load Balancer (CLB) instance.

    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 (health check) está falhando.

Sintoma: Não é possível acessar a instância de CLB externamente ao cluster.

Solução:

  1. Verifique se existem eventos de erro no service e resolva-os. Consulte Service error events and solutions.

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

  3. Confira se o grupo vServer do CLB está vazio. Se estiver, verifique se existe um pod associado ao service e em execução. Caso o pod não esteja íntegro, resolva o problema do pod primeiro. Consulte Troubleshoot pod issues.

  4. Verifique se a verificação de integridade do listener do CLB está passando. Em caso de falha, confirme se o pod responde corretamente. Consulte CLB health check FAQ.

Impossível conectar ao service HTTPS de back-end

Causa: Quando há 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 puro com a mensagem "The plain HTTP request was sent to HTTPS port".

Sintoma: Falhas na conexão com o 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, configure 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