Todos os produtos
Search
Central de documentação

Container Compute Service:Configure an NLB instance by using annotations

Última atualização: Jun 29, 2026

Adicione annotations ao YAML do seu Service Kubernetes para configurar instâncias de Network Load Balancer (NLB), listeners e server groups sem acessar o console.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um componente CCM na versão 2.5.0 ou posterior no cluster ACK. Para atualizar, consulte Gerenciar componentes

  • Um Service com spec.loadBalancerClass definido como alibabacloud.com/nlb. Sem esse campo, o ACK cria um Classic Load Balancer (CLB) por padrão

Importante

Após a criação de um Service, não é possível alterar spec.loadBalancerClass. Instâncias CLB e NLB não são conversíveis entre si.

Índice de annotations

Todas as annotations usam o prefixo service.beta.kubernetes.io/alibaba-cloud-loadbalancer-. A tabela abaixo lista todas as annotations por categoria.

Categoria

Annotation (apenas sufixo)

Obrigatório

Versão mínima do CCM

Instância NLB

zone-maps

Sim

2.5.0

address-type

Não

2.5.0

name

Não

2.5.0

resource-group-id

Não

2.5.0

ip-version

Não

2.5.0

additional-resource-tags

Não

2.5.0

id

Não

force-override-listeners

Não

2.5.0

bandwidth-package-id

Não

2.9.1

ipv6-address-type

Não

2.9.1

preserve-lb-on-delete

Não

2.10.0

Listener

security-group-ids

Não

2.6.0

protocol-port

Não

2.5.0

cert-id

Não

cacert-id

Não

cacert

Não

tls-cipher-policy

Não

proxy-protocol

Não

2.5.0

ppv2-pvl-vpc-id-enabled

Não

2.9.1

ppv2-pvl-ep-id-enabled

Não

2.9.1

ppv2-pvl-eps-id-enabled

Não

2.9.1

cps

Não

2.5.0

idle-timeout

Não

2.5.0

listener-port-range

Não

2.11.4

Server group

scheduler

Não

2.5.0

connection-drain

Não

2.5.0

connection-drain-timeout

Não

preserve-client-ip

Não

2.5.0

health-check-flag

Não

health-check-type

Não

health-check-connect-port

Não

health-check-connect-timeout

Não

healthy-threshold

Não

unhealthy-threshold

Não

health-check-interval

Não

health-check-uri

Não

health-check-domain

Não

health-check-method

Não

server-group-type

Não

2.8.0

vgroup-port

Não

weight

Não

ignore-weight-update

Não

2.11.1

Operações de instância NLB

Criar uma instância NLB pública

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descrição

Padrão

Versão mínima do CCM

Zonas da instância NLB. Especifique pelo menos duas zonas diferentes em uma lista separada por vírgulas no formato <zone-ID>:<vSwitch-ID>, por exemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. Visualize as regiões e zonas compatíveis no console NLB.

Nenhum

2.5.0

Para garantir alta disponibilidade, selecione vSwitches em pelo menos duas zonas diferentes.
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar uma instância NLB privada

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

Descrição

Padrão

Versão mínima do CCM

Tipo de rede da instância NLB. Valores válidos: internet (pública), intranet (privada). Especifique pelo menos duas zonas diferentes em zone-maps. Visualize as regiões e zonas compatíveis no console NLB.

internet

2.5.0

Para garantir alta disponibilidade, selecione vSwitches em pelo menos duas zonas diferentes.
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Especificar um nome

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

Descrição

Padrão

Versão mínima do CCM

Nome da instância NLB. Deve ter de 2 a 128 caracteres, começar com uma letra ou caractere chinês e pode conter dígitos, pontos (.), sublinhados (_) e hifens (-).

Nenhum

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Especificar um grupo de recursos

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

Descrição

Padrão

Versão mínima do CCM

Grupo de recursos da instância NLB. Após a definição, o grupo de recursos não pode ser alterado. Consulte o ID do seu grupo de recursos no console de Gerenciamento de Recursos da Alibaba Cloud.

Nenhum

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "${your-resource-group-id}"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar uma instância NLB dual-stack

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Descrição

Padrão

Versão mínima do CCM

Versão IP da instância NLB. Não pode ser alterada após a criação da instância. Valores válidos: ipv4 (somente IPv4), DualStack (IPv4 e IPv6). Ao usar DualStack, ambos os vSwitches em zone-maps devem ter o IPv6 habilitado. O endereço IPv6 gerado é acessível apenas em ambientes com suporte a IPv6.

ipv4

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Adicionar tags

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

Descrição

Padrão

Versão mínima do CCM

Tags personalizadas para adicionar à instância NLB. Separe múltiplas tags com vírgulas, por exemplo, k1=v1,k2=v2.

Nenhum

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Usar uma instância NLB existente

Defina ambas as annotations juntas.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

Sim

ID da instância NLB existente.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners

Não

Controla se o CCM gerencia os listeners na instância existente. true: o CCM cria, atualiza e exclui listeners com base no Service. false: o CCM não modifica os listeners.

false

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Associar uma instância de Internet Shared Bandwidth

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

Descrição

Padrão

Versão mínima do CCM

ID da instância de Internet Shared Bandwidth a ser associada à instância NLB. Consulte o ID do pacote de largura de banda no console VPC.

Nenhum

2.9.1

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Especificar o tipo de rede IPv6

Use ambas as annotations juntas para configurar uma instância NLB dual-stack com um tipo de rede IPv6 específico.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Sim

Versão IP. Deve ser DualStack ao usar ipv6-address-type. O modo kube-proxy do cluster deve ser IPVS. Ambos os vSwitches em zone-maps devem ter o IPv6 habilitado.

ipv4

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type

Não

Tipo de rede IPv6. intranet: IPv6 privado. internet: IPv6 público. Para um endereço IPv6 público, deve existir um gateway IPv6 na VPC. Consulte Criar e gerenciar um gateway IPv6.

intranet

2.9.1

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Reter a instância NLB ao excluir o serviço

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete

Descrição

Versão mínima do CCM

Retém a instância NLB criada pelo Service quando você exclui o Service LoadBalancer. Quando ativado, as tags kubernetes.do.not.delete e ack.aliyun.com são removidas da instância NLB e do server group, e os servidores existentes são mantidos. Um evento de aviso PreservedOnDelete é gerado durante a sincronização do serviço. Verifique esse evento para confirmar que o recurso está ativo. Valores válidos: qualquer string não vazia (ativado), vazia ou não definida (desativado).

2.10.0

Importante

Exclua o Service para acionar a retenção em vez de alterar o tipo de serviço. Alterar o tipo pode fazer com que o serviço seja reassociado incorretamente à instância NLB retida.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Operações de listener

Definir grupos de segurança

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

Descrição

Padrão

Versão mínima do CCM

Grupos de segurança a serem atribuídos ao listener. Separe múltiplos IDs de grupos de segurança com vírgulas, por exemplo, sg-aaaaa,sg-bbbbb.

Nenhum

2.6.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar protocolos TCP e UDP para um listener

Este recurso requer Kubernetes 1.24 ou posterior. Para instruções de atualização, consulte Atualizar um cluster ACK.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar um listener TCP

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar um listener UDP

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar um listener TCP sobre SSL

Defina ambas as annotations juntas.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Sim

Protocolo e porta do listener. Separe múltiplos valores com vírgulas, por exemplo, TCP:80,TCPSSL:443.

Nenhum

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Sim

ID do certificado do servidor. Crie e visualize certificados no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service. O formato combinado do ID do certificado é ${your-cert-id}-cn-hangzhou para regiões na China continental e ${your-cert-id}-ap-southeast-1 para regiões fora da China continental.

Nenhum

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # Chinese mainland regions: ${your-cert-id}-cn-hangzhou
    # Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Ativar autenticação mútua

Defina todas as quatro annotations juntas.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Sim

Protocolo e porta do listener. Por exemplo, TCP:80,TCPSSL:443.

Nenhum

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Sim

ID do certificado do servidor. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id

Sim

ID do certificado CA. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert

Sim

Ativa ou desativa a autenticação mútua. on: ativado. off: desativado.

Nenhum

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # Chinese mainland regions: ${your-cert-id}-cn-hangzhou
    # Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir uma política de segurança TLS

Defina todas as três annotations juntas.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Sim

Protocolo e porta do listener. Por exemplo, TCP:80,TCPSSL:443.

Nenhum

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Sim

ID do certificado do servidor. Visualize-o no console do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Serviceconsole do Certificate Management Service.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy

Não

Política de segurança TLS. Políticas de sistema e personalizadas são compatíveis. Valores válidos: tls_cipher_policy_1_0, tls_cipher_policy_1_1, tls_cipher_policy_1_2, tls_cipher_policy_1_2_strict, tls_cipher_policy_1_2_strict_with_1_3.

tls_cipher_policy_1_0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # Chinese mainland regions: ${your-cert-id}-cn-hangzhou
    # Regions outside the Chinese mainland: ${your-cert-id}-ap-southeast-1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${the-combined-certificate-id}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir Proxy Protocol

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Descrição

Padrão

Versão mínima do CCM

Transmite endereços IP do cliente para servidores backend via Proxy Protocol. on: ativado. off: desativado.

off

2.5.0

Importante

Antes de ativar o Proxy Protocol, certifique-se de que o Proxy Protocol v2 esteja habilitado no serviço backend. Caso contrário, as solicitações de acesso falharão.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Transportar informações adicionais via Proxy Protocol

Use proxy-protocol junto com uma ou mais das seguintes annotations para passar metadados do PrivateLink aos servidores backend.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Sim

Habilita o Proxy Protocol. Deve ser definido como on para que as outras annotations tenham efeito.

off

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled

Não

Transmite o VpcId para servidores backend via Proxy Protocol. on: ativado. off: desativado.

off

2.9.1

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled

Não

Transmite o PrivateLinkEpId para servidores backend via Proxy Protocol. on: ativado. off: desativado.

off

2.9.1

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled

Não

Transmite o PrivateLinkEpsId para servidores backend via Proxy Protocol. on: ativado. off: desativado.

off

2.9.1

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir o máximo de novas conexões por segundo

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

Descrição

Padrão

Versão mínima do CCM

Número máximo de novas conexões por segundo na instância NLB. Valores válidos: 0–1.000.000. 0 significa ilimitado.

Nenhum

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir o tempo limite de conexão ociosa

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

Descrição

Padrão

Versão mínima do CCM

Período de tempo limite de conexão ociosa em segundos. Valores válidos: 10–900.

900

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar um intervalo de portas de listener

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range

Descrição

Versão mínima do CCM

Configura o encaminhamento de todas as portas na instância NLB. O listener monitora um intervalo de portas e encaminha o tráfego para as portas correspondentes do servidor backend. Formato: <port-range>:<service-port>. Separe múltiplas entradas com vírgulas, por exemplo, 80-100:80,400-500:443. Intervalos de portas para o mesmo protocolo não podem se sobrepor. targetPort deve ser um inteiro de 1 a 65535 e é usado como porta de health check no servidor backend.

2.11.4

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80 # Health check port on the backend server. Must be an integer.
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Operações de server group

Definir um algoritmo de agendamento

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

Descrição

Padrão

Versão mínima do CCM

Algoritmo de agendamento para distribuir tráfego aos servidores backend. Valores válidos: wrr (round-robin ponderado — servidores com pesos maiores recebem mais solicitações), rr (round-robin — as solicitações são distribuídas sequencialmente), sch (hash de IP de origem — solicitações do mesmo IP de origem vão para o mesmo servidor), tch (hash de quádrupla — hash consistente baseado em IP de origem, IP de destino, porta de origem e porta de destino), wlc (menos conexões ponderado — o servidor com menos conexões ativas em relação ao seu peso recebe a próxima solicitação). Para detalhes, consulte o campo Scheduler em CreateServerGroup.

wrr

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar connection draining

Defina ambas as annotations juntas.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain

Sim

Habilita o connection draining. on: ativado. off: desativado.

off

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout

Sim

Período de tempo limite do connection draining em segundos. Valores válidos: 10–900.

Nenhum

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Ativar preservação de IP do cliente

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip

Descrição

Padrão

Versão mínima do CCM

Preserva o endereço IP original do cliente ao encaminhar tráfego para servidores backend. on: ativado. off: desativado.

on

2.5.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar health checks TCP

Health checks TCP são habilitados por padrão. Use as seguintes annotations para personalizar o comportamento.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

Não

Habilita ou desabilita health checks. on: ativado. off: desativado.

on

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

Não

Protocolo do health check. tcp ou http.

tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

Não

Porta do servidor backend usada para health checks. Valores válidos: 0–65535. 0 usa a porta do servidor backend.

0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

Não

Tempo limite máximo de resposta para um health check em segundos. Valores válidos: 1–300.

5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

Não

Número de verificações bem-sucedidas consecutivas antes que um servidor backend seja declarado saudável. Valores válidos: 2–10.

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

Não

Número de verificações com falha consecutivas antes que um servidor backend seja declarado não saudável. Valores válidos: 2–10.

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

Não

Intervalo entre health checks consecutivos em segundos. Valores válidos: 1–50.

10

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar health checks HTTP

Health checks TCP são habilitados por padrão. Para alternar para health checks HTTP, defina health-check-type como http e configure as annotations necessárias abaixo.

Annotation

Obrigatório

Descrição

Padrão

Versão mínima do CCM

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

Não

Habilita ou desabilita health checks. on: ativado. off: desativado.

on

2.5.0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

Sim

Defina como http para usar health checks HTTP.

tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri

Sim

Caminho para health checks HTTP. Deve começar com /, ter de 1 a 80 caracteres e pode conter letras, dígitos e caracteres especiais. Consulte CreateServerGroup para caracteres válidos. Tem efeito apenas quando health-check-type é http.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain

Sim

Nome de domínio para health checks HTTP. $_ip: usa o IP privado do servidor backend. Ou especifique um nome de domínio de 1 a 80 caracteres contendo letras minúsculas, dígitos, hifens e pontos. Tem efeito apenas quando health-check-type é http.

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

Não

Porta do servidor backend usada para health checks. Valores válidos: 0–65535. 0 usa a porta do servidor backend.

0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

Não

Tempo limite máximo de resposta para um health check em segundos. Valores válidos: 1–300.

5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

Não

Número de verificações bem-sucedidas consecutivas antes que um servidor backend seja declarado saudável. Valores válidos: 2–10.

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

Não

Número de verificações com falha consecutivas antes que um servidor backend seja declarado não saudável. Valores válidos: 2–10.

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

Não

Intervalo entre health checks consecutivos em segundos. Valores válidos: 1–50.

10

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method

Não

Método HTTP para health checks. GET ou HEAD. Tem efeito apenas quando health-check-type é http.

Nenhum

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.test.com"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head" # Optional.
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir o tipo de server group

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type

Descrição

Padrão

Versão mínima do CCM

Tipo de server group. Instance: tipo instância, com suporte a backends ECS e ENI. Ip: tipo endereço IP, com suporte a servidores backend adicionados diretamente por endereço IP. Para detalhes, consulte Server groups NLB.

Instance

2.8.0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Reutilizar um server group existente

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

Reutiliza um server group existente. Esta annotation tem efeito apenas ao reutilizar uma instância NLB existente. Para um exemplo de uso, consulte Implantar serviços entre clusters reutilizando uma instância SLB existente.

Definir o peso de tráfego para um serviço

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

Define o peso de tráfego para o serviço atual quando múltiplos serviços compartilham a mesma instância NLB. Esta annotation tem efeito apenas ao reutilizar um server group existente. Para um exemplo de uso, consulte Implantar serviços entre clusters reutilizando uma instância SLB existente.

Ignorar atualizações de peso do servidor backend

Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update

Descrição

Versão mínima do CCM

Ignora a atualização de pesos dos servidores backend no server group durante a sincronização do serviço. Use esta annotation ao gerenciar pesos de servidores backend manualmente. on: ignorar atualizações de peso. off: atualizar pesos normalmente. Padrão: off.

2.11.1

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # For example, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer