Se você não tiver um balanceador de carga disponível, o componente cloud-controller-manager (CCM) cria e gerencia automaticamente uma instância de balanceador de carga para um service do tipo type: LoadBalancer. Essa instância pode ser um Classic Load Balancer (CLB) ou um Network Load Balancer (NLB). Este tópico descreve como expor uma aplicação Nginx usando um service que cria automaticamente um balanceador de carga.
Notas de uso
Considerações para instâncias de SLB gerenciadas pelo CCM
O CCM configura o balanceamento de carga apenas para Services do tipo
Type=LoadBalancer.O CCM utiliza uma API declarativa e pode atualizar a configuração do SLB com base em alterações no Service. Modificações manuais no console do SLB podem ser sobrescritas.
Não exclua nem modifique o finalizer
service.k8s.alibaba/resourcesouservice.k8s.alibaba/nlb. Isso pode impedir a recuperação correta dos recursos do CLB ou NLB.Para o Cloud Controller Manager v2.5.0 ou posterior, especificar uma instância de CLB ao criar um Service requer inclusão na lista de permissões. Envie uma solicitação no Quota Center.
Se um Service Type=LoadBalancer for alterado para outro tipo, o CCM excluirá as configurações do SLB. O Service ficará inacessível por meio da instância de SLB.
Não modifique as configurações de instâncias de SLB gerenciadas pelo ACK no console do SLB. Suas alterações podem ser perdidas e o Service pode ficar inacessível.
Server Load Balancer
O CCM cria uma instância de SLB para cada Service
Type=LoadBalancer. A cota padrão é de 60 instâncias de CLB e 60 de NLB. Para aumentar essa cota, acesse o console do Quota Center e envie uma solicitação.-
O CCM anexa instâncias de ECS ou Elastic Network Interfaces (ENIs) ao grupo de servidores de backend do SLB conforme a configuração do Service, criando um grupo de servidores separado por targetPort. Limites de cota:
Número de servidores de backend: Uma instância de CLB suporta até 200 servidores de backend; uma instância de NLB suporta até 400 servidores baseados em ECS, ENI ou IP. Fórmula da cota: servidores de backend × targetPorts. Para aumentar a cota, acesse o console do Quota Center e envie uma solicitação com antecedência.
Anexos de grupo de servidores por instância: Uma instância de ECS ou ENI pode ser anexada a até 50 grupos de servidores de backend de CLB e 200 grupos de servidores de backend de NLB. Para aumentar esse limite, acesse o console do Quota Center e envie uma solicitação.
Cota extra durante atualizações contínuas: Novos pods são criados antes da destruição dos antigos, consumindo cota extra que pode exceder as expectativas. Reserve cota suficiente com antecedência.
O CCM cria listeners com base nas portas do Service. O limite padrão é de 50 listeners por instância de CLB ou NLB. Para adicionar mais, acesse o console do Quota Center e envie uma solicitação.
-
Consulte CLB limits e NLB limits.
Verifique as cotas do SLB em Gerenciamento de cotas do Server Load Balancer.
Implantar uma aplicação
Implante uma aplicação NGINX stateless como backend do Service LoadBalancer.
Usar o console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel à esquerda, escolha Workloads > Deployments.
-
Na página Deployments, clique em Create from Image e configure o Deployment:
Na página Basic Information, defina Name como
my-nginxe clique em Next.-
Na página Container, configure a imagem e a porta:
Parâmetro
Valor
Image Name
Clique em Select images. Na aba Artifact Center, pesquise por
nginxe selecione openanolis/nginx. Clique em Select Image Tag, defina uma tag e clique em OK.Port
Nome:
nginx, Porta do Contêiner:80 Na página Advanced, mantenha os padrões e clique em Create.
Usar kubectl
-
Crie um arquivo chamado
my-nginx.yamlcom o seguinte conteúdo:apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # Deployment name labels: app: nginx spec: replicas: 2 # Number of pod replicas selector: matchLabels: app: nginx # Must match the selector in the Service template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Implante a aplicação:
kubectl apply -f my-nginx.yaml -
Verifique se o Deployment está pronto:
kubectl get deployment my-nginxSaída esperada:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 50s
Etapa 2: Expor a aplicação com um balanceador de carga criado automaticamente
Crie um service do tipo type: LoadBalancer e exponha sua aplicação usando o console do ACK ou o kubectl.
A partir de 11 de setembro de 2025, a criação de um Service do tipo Classic Load Balancer (CLB) por meio do console requer acesso à lista de permissões. Antes de criar um Service do tipo CLB no console, envie uma solicitação de cota privilegiada para "Criação baseada em console de um Service do tipo CLB" no Quota Center (IDs de cota: ack.white_list / ack.create_clb_service). Você só poderá criar um Service do tipo CLB no console após a aprovação da solicitação. Para mais informações, consulte o anúncio de alteração do product.
Console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Services, clique em Create. Na caixa de diálogo Create Service, defina os parâmetros do service.
Parâmetro
Descrição
Exemplo
Name
Insira um nome para o service.
my-nginx-svc
service type
Selecione um service type. Um service suporta os seguintes modos de rede para lidar com acessos de diferentes tipos e origens de clientes:
Selecione Server Load Balancer como o tipo de service.
Selecione CLB como o tipo de balanceador de carga e selecione Create Resource.
Na seção suspensa Create CLB Instance, ajuste as configurações conforme necessário. Defina o Billing Method como Pay-by-specification.
External Traffic Policy
Defina o tipo de service como Node Port ou Server Load Balancer antes de configurar a External Traffic Policy. Para mais informações, consulte Manage services.
Local: O tráfego vai apenas para pods no mesmo nó.
Cluster: O tráfego pode ser encaminhado para pods em outros nós do cluster.
Local
Backend
Selecione a aplicação de backend para vincular ao service. Se você não associar um deployment, o sistema não criará objetos Endpoints. Para mais informações, consulte services-without-selectors.
Nome: app
Valor: nginx
Port Mapping
Adicione uma porta de service (corresponde ao campo
portno arquivo YAML do Service) e uma porta de contêiner (corresponde ao campotargetPortno arquivo YAML do Service). A porta do contêiner deve corresponder à porta exposta pelo pod de backend.Porta do Service: 80
Porta do Contêiner: 80
Protocolo: TCP
annotations
Adicione uma annotation ao service para configurar parâmetros do balanceador de carga. Para mais parâmetros, consulte Configure CLB using annotations e Configure NLB using annotations.
ImportanteNão reutilize a instância de balanceador de carga do API Server do cluster. Caso contrário, o acesso ao cluster pode ser interrompido.
Neste exemplo, o tráfego de rede pública para o service é faturado com base na largura de banda, com um pico de largura de banda de 2 Mbit/s para controlar o tráfego. As annotations são as seguintes:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: paybybandwidthservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: 2
labels
Adicione um rótulo para identificar o service.
Nenhum
Service Deletion Protection
Ative a proteção contra exclusão para services que suportam negócios críticos ou lidam com dados sensíveis. Isso evita exclusões acidentais e reduz custos de manutenção. Após ativar a proteção contra exclusão, você deve desativá-la manualmente antes de excluir o recurso.
NotaPara usar este recurso, instale os componentes policy-template-controller e gatekeeper do complemento Container Security Policy. Clique em Install Now para implantar os componentes.
Desativado
Após configurar os parâmetros, clique em OK.
-
Depois que o service for criado, clique em seu nome para acessar a página de detalhes. Na seção Basic Information, clique no External IP do service, como
39.106.XX.XX:80, para acessar a aplicação de exemplo.
Kubectl
-
Crie um arquivo chamado my-nginx-svc.yaml com o seguinte conteúdo para o service de exemplo.
Defina o selector com o valor de matchLabels no arquivo da aplicação de exemplo my-nginx.yaml, que é
app: nginxneste exemplo. Isso associa o service à aplicação de backend.apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer -
Aplique o Service:
kubectl apply -f my-nginx-svc.yaml -
Confirme se o Service possui um IP externo:
kubectl get svc my-nginx-svcSaída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc LoadBalancer 172.21.5.82 39.106.XX.XX 80:30471/TCP 5m -
Acesse a aplicação:
curl <YOUR-EXTERNAL-IP> # Replace with the external IP from the previous stepSaída esperada:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... </html>
Classic Load Balancer (CLB)
Create CLB Instance
Ao criar um Classic Load Balancer (CLB), siga as instruções para criar uma instância de CLB. Para mais informações, consulte Create and manage CLB instances.
Nome | Descrição |
Name | Insira um nome personalizado para o CLB. |
Access Method | Selecione Public Access ou Internal Access. |
Billing Method | Selecione Pay-by-specification ou Pay-as-you-go (Pay-by-CU). Para mais informações, consulte CLB billing overview. |
IP Version | Selecione IPv4 ou IPv6. Importante Para usar IPv6, certifique-se de que a região do seu cluster ACK suporte instâncias de CLB IPv6. Para regiões que suportam CLB IPv6, consulte CLB supported regions. |
Scheduling Algorithm | Os algoritmos suportados são round robin (RR) e weighted round robin (WRR). RR (padrão): Distribui solicitações externas para servidores de backend em sequência. WRR: Servidores de backend com pesos maiores recebem mais solicitações. |
Access Control | Fornece controle de acesso no nível do listener. Para mais informações, consulte Access control. |
Health Check | Suporta protocolos TCP e HTTP. Após ativar as verificações de integridade, use-as para determinar a disponibilidade dos servidores de backend. Para mais informações, consulte CLB health check. |
Others | Configure o CLB usando annotations. Para mais informações, consulte Configure CLB using annotations. |
Use Existing Resource
Selecione uma instância existente de Classic Load Balancer (CLB) na lista suspensa. Você também pode selecionar a opção para sobrescrever forçadamente os listeners existentes. Para mais informações, consulte Use existing load balancer and force overwrite existing listeners.
A reutilização de instâncias de CLB está sujeita a certas limitações e considerações. Para mais informações, consulte Which Server Load Balancers can be reused?.
Configure Resources
|
Nome |
Descrição |
|
Scheduling Algorithm |
Suporta duas políticas: round-robin (RR) e weighted round-robin (WRR). RR é o padrão. Com RR, o Server Load Balancer distribui solicitações externas para servidores de backend em sequência. Com WRR, servidores de backend com pesos maiores recebem mais solicitações. |
|
Access Control |
Fornece controle de acesso no nível do listener. Para mais informações, consulte Access control. |
|
Health Check |
Suporta protocolos TCP e HTTP. Após ativar as verificações de integridade, o Server Load Balancer as utiliza para avaliar a disponibilidade dos seus servidores de backend. Para saber como funcionam as verificações de integridade, consulte How Server Load Balancer health checks work. |
|
Others |
Você também pode configurar um Classic Load Balancer usando annotations. Para mais informações, consulte Configure a Classic Load Balancer using annotations. |
Network Load Balancer (NLB)
Create NLB Instance
É possível criar um recurso Network Load Balancer (NLB). Para mais informações, consulte Create and manage NLB instances.
Nome | Descrição |
Name | Insira um nome personalizado para a instância de NLB. Este parâmetro é obrigatório apenas quando você cria uma nova instância de NLB. |
Access Method | Selecione Public Access ou Internal Access conforme necessário. |
Billing Method | Pay-as-you-go. Para mais informações, consulte NLB billing. |
IP Version | Selecione IPv4 ou DualStack conforme necessário. |
Scheduling Algorithm | Selecione um algoritmo de agendamento.
|
Health Check | Ative ou desative as verificações de integridade.
|
Others | Você também pode configurar a instância de NLB usando annotations. Para mais informações, consulte Configure an NLB instance using annotations. |
VPC | A região e o ID da VPC padrão para o cluster. |
vSwitch | Selecione um switch virtual para uma zona suportada na VPC padrão do cluster. Você também pode clicar em Create vSwitch para criar um novo. |
Use Existing Resource
Selecione uma instância de NLB existente na lista suspensa. Você também pode selecionar a opção para sobrescrever forçadamente o listener existente. Para mais informações, consulte Use an existing Server Load Balancer instance.
A reutilização de uma instância de NLB está sujeita a certas limitações. Para mais informações, consulte Which Server Load Balancer instances can be reused?
Configure Resources
Nome | Descrição |
Scheduling Algorithm | Selecione um algoritmo de agendamento.
|
Health Check | Ative ou desative as verificações de integridade.
|
Others | Você também pode configurar a instância de NLB usando annotations. Para mais informações, consulte Configure an NLB instance using annotations. |
VPC | A região e o ID da VPC padrão para o cluster. |
vSwitch | Selecione um switch virtual para uma zona suportada na VPC padrão do cluster. Você também pode clicar em Create vSwitch para criar um novo. |
Próximas etapas
Se precisar visualizar, atualizar ou excluir um service, ou ativar a proteção contra exclusão de service, execute as operações a seguir. Por exemplo, é possível modificar o balanceador de carga público associado ao service.
Quando você exclui um Service ou altera seu tipo de LoadBalancer para outro tipo, a instância de balanceador de carga criada automaticamente é liberada automaticamente.
Console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Services, localize o service desejado e clique em Update na coluna Actions ou clique no ícone
para atualizar, Delete ou Enable Deletion Protection para o service.
Kubectl
Atualizar um service
-
Método 1: Execute o comando a seguir para atualizar o service.
kubectl edit service my-nginx-svc -
Método 2: Modifique o arquivo YAML e aplique as alterações.
kubectl apply -f my-nginx-svc.yaml
Visualizar um service
Execute o comando a seguir para visualizar o service.
kubectl get service my-nginx-svc
Saída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx-svc LoadBalancer 172.21.XX.XX 192.168.XX.XX 80:31599/TCP 5m
Excluir um service
Execute o comando a seguir para excluir o service.
kubectl delete service my-nginx-svc