Associe um CLB ou NLB existente a um LoadBalancer Service para manter um IP fixo ou compartilhar o balanceador entre vários Services.
Para acesso externo ao cluster, utilize <SLB-IP>:<Service port> ou o nome de domínio do SLB. Para acesso interno, use <Service name>:<Service port>.
Pré-requisitos
Verifique os seguintes requisitos:
Um cluster ACK gerenciado, dedicado ou Serverless deve estar criado. Consulte Create an ACK managed cluster, Create an ACK dedicated cluster (discontinued) e Create an ACK Serverless cluster.
Uma instância CLB ou NLB deve existir no SLB console, na mesma região do seu cluster. Consulte Use an existing CLB instance e Use an existing NLB instance.
Se você planeja reutilizar uma instância SLB existente, não selecione Install Ingresses durante a criação do cluster. Especifique a instância manualmente depois. Consulte Use an existing CLB instance e Use an existing NLB instance.
Observações de uso
O gerenciamento de listeners depende da versão do cloud-controller-manager, e algumas instâncias SLB não podem ser reutilizadas.
Comportamento dos listeners por versão do cloud-controller-manager
A configuração dos listeners varia conforme a versão do cloud-controller-manager:
v1.9.3.59-ge3bc999-aliyun e posteriores: o cloud-controller-manager não configura listeners por padrão. Adicione
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"para permitir que o ACK gerencie os listeners ou configure-os manualmente.Anteriores à v1.9.3.59-ge3bc999-aliyun: o cloud-controller-manager cria e gerencia grupos de servidores backend, associando todos os listeners — inclusive os configurados manualmente — a esses grupos.
Verificar a versão do cloud-controller-manager
Console: No ACK console, acesse a página Operations > Add-ons do seu cluster. Na aba Core Components, verifique a versão do Cloud Controller Manager.
-
kubectl (apenas clusters dedicados ACK):
kubectl delete service my-nginx-svc
Limites de uso
Não reutilize a instância SLB do servidor de API do cluster, pois isso causa falhas de acesso.
Revise which SLB instances can be reused e quota limits antes de prosseguir.
Implantar uma aplicação
Implante uma aplicação NGINX stateless como backend do LoadBalancer Service.
Usar o ACK console
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel esquerdo, 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 Confirm.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:kubectl delete service my-nginx-svc -
Implante a aplicação:
kubectl delete service my-nginx-svc -
Verifique se o Deployment está pronto:
kubectl delete service my-nginx-svcSaída esperada:
kubectl delete service my-nginx-svc
Criar um LoadBalancer Service
Aponte o Service para sua instância SLB existente para rotear tráfego externo aos pods NGINX.
Usar o ACK console
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel esquerdo, escolha Network > Services.
-
Na página Services, clique em Create. Na caixa de diálogo Create Service, configure estes parâmetros:
Parâmetro
Descrição
Exemplo
Name
Nome do Service
my-nginx-svcService Type
Selecione LoadBalancer, defina SLB Type como CLB e selecione Use Existing Resource. Escolha uma instância CLB. Para instâncias sem listeners, ative Create port listener.
SLB > CLB > Use Existing Resource
External Traffic Policy
Local roteia tráfego apenas para pods no nó atual. Cluster roteia tráfego para pods em todos os nós.
LocalBackend
A aplicação a ser associada ao Service
Nome:
app, Valor:nginxPort Mapping
Mapeia a porta do Service para a porta do contêiner
Porta do Service:
80, Porta do contêiner:80, Protocolo:TCPAnnotations
Adicione annotations para configurar a instância SLB. Consulte Use annotations to configure CLB instances e Use annotations to configure NLB instances.
N/A
-
Clique em OK. Clique no nome do Service para abrir os detalhes e, em seguida, clique no External IP (por exemplo,
39.106.XX.XX:80) para verificar o acesso.
Usar kubectl
-
Crie um arquivo chamado
my-nginx-svc.yamlcom o seguinte conteúdo:Campo
Descrição
metadata.annotationsalibaba-cloud-loadbalancer-id: o ID da instância SLB existente.alibaba-cloud-loadbalancer-force-override-listeners: 'true': permite que o ACK gerencie os listeners. Omita para manter a configuração existente dos listeners.spec.selectorSeleciona os pods que receberão tráfego. Deve corresponder ao
matchLabelsno Deployment (app: nginx).spec.ports.portA porta exposta no IP do cluster. Acesso dentro do cluster via
clusterIP:port.spec.ports.targetPortA porta do pod backend. O kube-proxy encaminha o tráfego de
portparatargetPort.kubectl delete service my-nginx-svc -
Aplique o Service:
kubectl delete service my-nginx-svc -
Confirme se o Service possui um IP externo:
kubectl delete service my-nginx-svcSaída esperada:
kubectl delete service my-nginx-svc -
Acesse a aplicação:
kubectl delete service my-nginx-svcSaída esperada:
kubectl delete service my-nginx-svc
Gerenciar Services
Usar o ACK console
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel esquerdo, escolha Network > Services.
Na página Services, clique no nome de um Service para visualizar detalhes ou clique em Update ou Delete na coluna Actions.
Usar kubectl
Atualizar um Service
kubectl delete service my-nginx-svc
Ou edite my-nginx-svc.yaml e reaplique:
kubectl delete service my-nginx-svc
Visualizar um Service
kubectl delete service my-nginx-svc
Saída esperada:
kubectl delete service my-nginx-svc
Excluir um Service
kubectl delete service my-nginx-svc
Referência de configuração do CLB
Configure estes parâmetros ao criar ou reutilizar uma instância CLB no ACK console.
Criar uma nova instância CLB
|
Parâmetro |
Descrição |
|
Name |
Nome da instância CLB |
|
Access Method |
Public Access ou Internal Access |
|
Billing Method |
Pay-by-specification ou Pay-as-you-go (Pay-by-CU). Consulte CLB billing. |
|
IP Version |
IPv4 ou IPv6 |
|
Scheduling Algorithm |
Round Robin (RR) (padrão): distribui solicitações sequencialmente. Weighted Round Robin (WRR): servidores com maior peso recebem mais solicitações. |
|
Access Control |
Ative ou desative o controle de acesso no nível do listener. Consulte Access control. |
|
Health Check |
TCP ou HTTP. Consulte CLB health checks. |
|
Others |
Configure com annotations. Consulte Use annotations to configure CLB instances. |
Usar uma instância CLB existente
Selecione a instância e, opcionalmente, ative Create port listener. Consulte Use an existing CLB instance and forcefully overwrite the listeners of the CLB instance.
Revise os limites de uso antes de reutilizar um CLB. Consulte Usage notes em "Considerations for configuring a LoadBalancer Service."
Configurações avançadas
|
Parâmetro |
Descrição |
|
Scheduling Algorithm |
Round Robin (RR) (padrão) ou Weighted Round Robin (WRR) |
|
Access Control |
Ativar ou desativar o controle de acesso do listener |
|
Health Check |
TCP ou HTTP. Consulte CLB health checks. |
|
Others |
Configure com annotations. Consulte Use annotations to configure CLB instances. |
Referência de configuração do NLB
Configure estes parâmetros ao criar ou reutilizar uma instância NLB no ACK console.
Criar uma nova instância NLB
Parâmetro | Descrição |
Name | Nome da instância NLB |
Access Method | Public Access ou Internal Access |
Billing Method | Pay-as-you-go (Pay-by-CU). Consulte NLB billing. |
IP Version | IPv4 ou Dual-stack |
Scheduling Algorithm | Round-Robin: distribui sequencialmente. Weighted Round-Robin (padrão): servidores com maior peso recebem mais solicitações. Source IP Hashing: mesmo IP de origem roteia para o mesmo servidor. Four-Element Hashing: roteia por IP de origem, IP de destino, porta de origem e porta de destino. QUIC ID Hashing: mesmo QUIC ID roteia para o mesmo servidor. Weighted Least Connections: roteia por peso e contagem de conexões. |
Health Check |
|
VPC | Região da VPC e ID da VPC do cluster |
Vswitch | Selecione um vSwitch em uma zona suportada ou crie um novo |
Others | Configure com annotations. Consulte Use annotations to configure NLB instances. |
Usar uma instância NLB existente
Selecione a instância e, opcionalmente, ative Create port listener. Consulte Use an existing NLB instance.
Revise os limites de uso antes de reutilizar um NLB. Consulte Usage notes em "Considerations for configuring a LoadBalancer Service."
Configurações avançadas
|
Parâmetro |
Descrição |
|
Scheduling Algorithm |
Mesmas opções da tabela de criação de instância NLB acima |
|
Health Check |
Mesmas opções da tabela de criação de instância NLB acima |
|
VPC |
Região da VPC e ID da VPC do cluster |
|
Vswitch |
Selecione um vSwitch em uma zona suportada ou crie um novo |
|
Others |
Configure com annotations. Consulte Use annotations to configure NLB instances. |
Próximos passos
Para permitir que o ACK crie e gerencie automaticamente uma instância SLB em vez de reutilizar uma, consulte Use an automatically created SLB instance to expose an application.
Se as annotations não estiverem surtindo efeito ou o Service não conseguir se associar a uma instância SLB, consulte Service FAQ e Service troubleshooting.