Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure an NLB with annotations

Última atualização: Oct 16, 2026

Use annotations no arquivo YAML de um Service para ativar recursos adicionais de balanceamento de carga no Network Load Balancer (NLB), como especificar o tipo de rede do NLB, ativar a proteção contra modificações e configurar a autenticação mútua. Este tópico explica como utilizar essas annotations para configurar o NLB. As configurações estão organizadas em três tipos de recursos: instância do NLB, listeners e server groups.

Índice

Categoria

Categoria de recurso

Link de configuração

Prerequisites

NLB operations

Criação

Configuração da instância

Listener operations

Criação

Configuração do listener

Configuração de segurança

Server group operations

Configuração do servidor

Observações

  • Verifique se o cluster está na versão v1.24 ou posterior e se o add-on Cloud Controller Manager (CCM) está na versão v2.5.0 ou posterior. Para atualizar o cluster, consulte Manually upgrade a cluster; para atualizar o add-on, consulte Manage components.

  • Na definição do Service, defina spec.loadBalancerClass como alibabacloud.com/nlb. Caso esse parâmetro não seja especificado, um Classic Load Balancer (CLB) será criado por padrão.

  • Após a criação de um Service, não é possível alterar o campo spec.loadBalancerClass. A conversão do tipo de balanceador de carga de CLB para NLB, ou vice-versa, não é suportada.

  • O gerenciamento de instâncias de NLB não está disponível no console do ACK. Utilize comandos kubectl para executar todas as operações de gerenciamento.

Operações do NLB

Criar um NLB público

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descrição

Versões do CCM suportadas

Define a zona, o vSwitch, o endereço IP privado e as informações do EIP para o NLB. O formato é o seguinte:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe várias entradas com vírgula (,).

  • Zona e ID do vSwitch: Obrigatórios. Especifique pelo menos dois, por exemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para obter uma lista de regiões e zonas suportadas pelo NLB, consulte o console do NLB.

  • Endereço IP privado: Opcional.

  • ID da instância EIP: Opcional.

Zonas e IDs de vSwitch: v2.5.0 ou posterior

Endereços IP privados e EIPs: v2.12.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Criar um NLB privado

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

Descrição

Versões do CCM suportadas

Define o tipo de rede do NLB. Altere o valor desta anotação para alternar o NLB entre público e privado. Valores válidos:

  • internet: um NLB público.

  • intranet: um NLB privado.

Padrão: internet

Acesse o console do NLB para visualizar as regiões e zonas suportadas. São necessárias pelo menos duas zonas. Separe múltiplas zonas por vírgulas, por exemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Especificar um endereço IP privado

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descrição

Versões do CCM suportadas

Define a zona, o vSwitch, o endereço IP privado e as informações do EIP para o NLB. O formato é o seguinte:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe várias entradas com vírgula (,).

  • Zona e ID do vSwitch: Obrigatórios. Especifique pelo menos dois pares. Por exemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para obter uma lista de regiões e zonas suportadas pelo NLB, consulte o console do NLB.

  • Endereço IP privado: Opcional.

  • ID da instância EIP: Opcional.

  • Zonas e IDs de vSwitch: v2.5.0 ou posterior

  • Endereços IP privados e EIPs: v2.12.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Especificar um ID de instância EIP

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descrição

Versões do CCM suportadas

Define a zona, o vSwitch, o endereço IP privado e as informações do EIP para o NLB. O formato é o seguinte:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe várias entradas com vírgula (,).

  • Zonas e IDs de vSwitch: Obrigatórios. Especifique pelo menos dois pares, como cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para obter uma lista de regiões e zonas suportadas pelo NLB, consulte o console do NLB.

  • Endereço IP privado: Opcional.

  • ID da instância EIP: Opcional.

Zonas e IDs de vSwitch: v2.5.0 ou posterior

Endereços IP privados e EIPs: v2.12.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Especificar o nome do balanceador de carga

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

Descrição

Versões do CCM suportadas

Define o nome da instância do balanceador de carga. O nome deve ter entre 2 e 128 caracteres, começar com uma letra ou caractere chinês e pode conter dígitos, pontos (.), sublinhados (_) e hifens (-).

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Especificar um grupo de recursos

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

Descrição

Versões do CCM suportadas

Define o grupo de recursos para o balanceador de carga. Não é possível alterar o ID do grupo de recursos após sua definição.

Você encontra o ID do grupo de recursos no console do Resource Management.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Criar um NLB dual-stack

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Para anexar servidores backend IPv6, consulte Attach IPv6 backend servers.

Descrição

Versões do CCM suportadas

O modo kube-proxy do cluster deve ser IPVS.

Define a versão do protocolo IP do NLB. A versão do protocolo IP não pode ser alterada após a criação. Valores válidos:

  • ipv4: IPv4.

  • DualStack: Suporta IPv4 e IPv6 simultaneamente.

    • Os dois vSwitches especificados em service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps devem ter o IPv6 ativado.

    • O endereço IPv6 gerado é acessível apenas em ambientes com IPv6 habilitado.

Padrão: ipv4

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Adicionar tags adicionais

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

Descrição

Versões do CCM suportadas

Permite adicionar tags extras. Use vírgula (,) para separar múltiplas tags. Por exemplo, k1=v1,k2=v2. Nas versões 2.10.0 e posteriores, é possível modificar as tags de instâncias existentes e reutilizadas.

Importante

Após adicionar esta anotação, quaisquer modificações manuais de tags feitas na instância do balanceador de carga no console serão sobrescritas.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Usar um balanceador de carga existente

Importante

Não adicione nem modifique a anotação de reutilização para um Serviço LoadBalancer existente. Essa ação pode causar falha na reutilização ou impedir que o balanceador de carga criado pelo CCM seja liberado.

Anotação: Várias anotações são utilizadas, conforme descrito na tabela a seguir.

Anotação

Descrição

Versões do CCM suportadas

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

Define o ID do balanceador de carga existente.

v2.5.0 ou posterior

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

Define se as configurações de listener do NLB devem ser sincronizadas com base na configuração do Serviço. Valores válidos:

  • true: O CCM cria, atualiza e exclui listeners do NLB com base na configuração do Serviço.

  • false: O CCM não processa os listeners do NLB.

Padrão: false

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Vincular um pacote de largura de banda compartilhada

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

Descrição

Versões do CCM suportadas

Define o ID do pacote de largura de banda compartilhada a ser vinculado.

O ID do pacote de largura de banda compartilhada está disponível no console da VPC.

v2.9.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Configurar encaminhamento entre zonas

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled

Descrição

Versões do CCM suportadas

Define se o encaminhamento entre zonas deve ser ativado. Valores válidos:

  • on

  • off

Padrão: on

v2.13.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Configurar uma lista de permissões de endereços IP de origem

Campo: .spec.loadBalancerRanges

Descrição

Versões do CCM suportadas

Este recurso aplica-se apenas a instâncias de NLB criadas e gerenciadas pelo CCM. Instâncias reutilizadas não são suportadas.

Ao configurar este campo, o CCM cria automaticamente um grupo de segurança, define as regras de acesso necessárias e associa o grupo de segurança à instância do NLB. Se você não configurar este campo ou deixá-lo vazio, nenhum grupo de segurança será associado.

Padrão: Vazio

Importante
  • Adicionar ou modificar este campo sobrescreve as associações de grupos de segurança existentes no NLB. Caso outros grupos de segurança estejam associados manualmente ao NLB, proceda com cautela.

  • Não modifique o grupo de segurança ou suas tags criados pelo CCM. Caso contrário, a associação poderá ser removida ou as regras sobrescritas.

v2.14.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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
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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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
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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Especificar o tipo de rede IPv6

Anotação: Várias anotações são utilizadas, conforme descrito na tabela a seguir.

Anotação

Descrição

Versões do CCM suportadas

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

O modo kube-proxy do cluster deve ser IPVS. Esta anotação define a versão do protocolo IP para o NLB. A versão do protocolo IP não pode ser alterada após a criação. Valores válidos:

  • ipv4: IPv4.

  • DualStack: Suporta IPv4 e IPv6 simultaneamente.

    • Ambos os vSwitches especificados em service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps devem ter o IPv6 ativado.

    • O endereço IPv6 gerado é acessível apenas em ambientes com IPv6 habilitado.

Padrão: ipv4

v2.5.0 ou posterior

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

Define o tipo de rede do endereço IPv6 do NLB. Valores válidos:

  • intranet: IPv6 privado.

  • internet: IPv6 público.

Padrão: intranet

Nota

Para usar um endereço IPv6 público, deve existir um gateway IPv6 na VPC onde a instância do NLB está implantada. Para mais informações, consulte Create and manage an IPv6 gateway.

v2.9.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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
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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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 um grupo de segurança do listener

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

Descrição

Versões do CCM suportadas

Especifica os IDs dos grupos de segurança a serem associados ao listener. Separe vários IDs com vírgula (,), por exemplo, sg-aaaaa,sg-bbbbb.

v2.6.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Configurar um listener TCP e UDP

Descrição

Versões do CCM suportadas

Este recurso requer Kubernetes v1.24 ou posterior. Para obter mais informações sobre como atualizar um cluster, consulte Upgrade an ACK Kubernetes cluster.

N/A

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Criar um listener UDP

Nota

Se você não especificar uma verificação de integridade ao criar um listener UDP, uma verificação de integridade TCP será ativada por padrão para o grupo de servidores. Para listeners UDP, recomendamos usar uma anotação para especificar explicitamente uma verificação de integridade UDP ou desativar as verificações de integridade.

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Criar um listener TCPSSL

Anotação: Consulte a tabela a seguir para ver as anotações necessárias.

Anotação

Descrição

Versões do CCM suportadas

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

Especifica o protocolo do listener. Para especificar vários protocolos, separe-os com vírgula (,), por exemplo, TCP:80,TCPSSL:443.

v2.5.0 ou posterior

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

Para obter o ID, faça login no Certificate Management Service console, crie um certificado e localize o ID na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

Importante

Atualmente, listeners TCP/SSL não suportam grupos de servidores com client IP address persistence ativado. Isso significa que você não pode configurar as anotações service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}" e service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" simultaneamente. Se precisar obter endereços IP de clientes por meio do NLB, consulte Obtain real client IP addresses on backend servers through NLB.

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Configurar um intervalo de portas do listener

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range

Descrição

Versões do CCM suportadas

Este recurso requer o plugin de rede Terway.

É possível configurar um listener para escutar em um intervalo de portas específico. A instância NLB encaminha o tráfego desse intervalo de portas para o mesmo intervalo nos servidores de backend. Por exemplo, se você configurar o intervalo de portas 80-100, o tráfego destinado às portas 80 a 100 na instância NLB será encaminhado para as portas 80 a 100 nos servidores de backend.

O formato é port-range:service-port. Separe vários valores com vírgula (,), por exemplo, 80-100:80,400-500:443. Portas e intervalos de portas para o mesmo protocolo não podem se sobrepor.

O targetPort especifica a porta de verificação de integridade para o grupo de servidores e deve ser um número inteiro de 1 a 65535.

v2.11.4 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Ativar autenticação mútua

Anotação: Consulte a tabela a seguir para ver as anotações necessárias.

Anotação

Descrição

Versões do CCM suportadas

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

Especifica o protocolo do listener. Para especificar vários protocolos, separe-os com vírgula (,), por exemplo, TCP:80,TCPSSL:443.

v2.5.0 ou posterior

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

Para obter o ID, faça login no Certificate Management Service console, crie um certificado e localize o ID na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

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

Para obter o ID, faça login no Certificate Management Service console e encontre o ID nos detalhes do certificado na página PCA Certificate Management.

image

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

Define se a autenticação mútua deve ser ativada. Valores válidos:

  • on: Ativa a autenticação mútua.

  • off: Desativa a autenticação mútua.

Valor padrão: off

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Definir uma política de segurança TLS

Anotação: Consulte a tabela a seguir para ver as anotações necessárias.

Anotação

Descrição

Versões do CCM suportadas

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

Especifica o protocolo do listener. Para especificar vários protocolos, separe-os com vírgula (,), por exemplo, TCP:80,TCPSSL:443.

v2.5.0 ou posterior

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

Para obter o ID, faça login no Certificate Management Service console, crie um certificado e localize o ID na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

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

O ID da política de segurança TLS. É possível usar políticas de segurança definidas pelo sistema ou personalizadas. 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

Valor padrão: 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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Ativar Proxy Protocol

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Descrição

Versões do CCM suportadas

Define se o Proxy Protocol deve ser usado para passar endereços IP de clientes aos servidores de backend. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: off

Importante

Antes de ativar o Proxy Protocol, certifique-se de que seus serviços de backend suportem o Proxy Protocol v2. Caso contrário, as conexões falharão. Configure este parâmetro com cautela.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Passar informações adicionais via Proxy Protocol

Anotação: Consulte a tabela a seguir para ver as anotações necessárias.

Anotação

Descrição

Versões do CCM suportadas

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

Define se o Proxy Protocol deve ser usado para passar endereços IP de clientes aos servidores de backend. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: off

Importante

Antes de ativar o Proxy Protocol, certifique-se de que seus serviços de backend suportem o Proxy Protocol v2. Caso contrário, as conexões falharão. Configure este parâmetro com cautela.

v2.5.0 ou posterior

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

Define se o Proxy Protocol deve ser usado para passar o VpcId aos servidores de backend. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: off

v2.9.1 ou posterior

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

Define se o Proxy Protocol deve ser usado para passar o PrivateLinkEpId aos servidores de backend. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: off

v2.9.1 ou posterior

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

Define se o Proxy Protocol deve ser usado para passar o PrivateLinkEpsId aos servidores de backend. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: off

v2.9.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Definir um limite de taxa de conexão do listener

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

Descrição

Versões do CCM suportadas

O número máximo de novas conexões por segundo para uma instância de Network Load Balancer (NLB). O valor deve ser um número inteiro de 0 a 1.000.000. Um valor igual a 0 indica que não há limite.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Definir um tempo limite de ociosidade do listener

Anotação: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

Descrição

Versões do CCM suportadas

O tempo limite de conexão ociosa em segundos. Valores válidos: 10 a 900.

Valor padrão: 900

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Definir uma política ALPN

Anotação: Consulte a tabela a seguir para ver as anotações necessárias.

Anotação

Descrição

Versões do CCM suportadas

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

Especifica o protocolo do listener. Para especificar vários protocolos, separe-os com vírgula (,), por exemplo, TCP:80,TCPSSL:443.

v2.5.0 ou posterior

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

Para obter o ID, faça login no Certificate Management Service console, crie um certificado e localize o ID na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

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

Define se a Negociação de Protocolo de Camada de Aplicação (ALPN) deve ser ativada. Valores válidos:

  • on: Ativa o ALPN.

  • off: Desativa o ALPN.

Valor padrão: off

v2.10.0 ou posterior

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy

A política ALPN. Valores válidos:

  • HTTP1Only: Negocia apenas o protocolo HTTP/1.x. Prioridade: HTTP/1.1 > HTTP/1.0.

  • HTTP2Only: Negocia apenas o protocolo HTTP/2.0.

  • HTTP2Optional: Prioriza o protocolo HTTP/1.x, mas também aceita o protocolo HTTP/2.0. Prioridade: HTTP/1.1 > HTTP/1.0 > HTTP/2.0.

  • HTTP2Preferred: Prioriza o protocolo HTTP/2, mas também aceita o protocolo HTTP/1.x. Prioridade: HTTP/2.0 > HTTP/1.1 > HTTP/1.0.

Para obter mais informações, consulte o parâmetro AlpnPolicy na referência da API CreateListener.

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Configurar certificados adicionais

Anotação

Descrição

Versões do CCM suportadas

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

Especifica o protocolo do listener. Para especificar vários protocolos, separe-os com vírgula (,), por exemplo, TCP:80,TCPSSL:443.

v2.5.0 ou posterior

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

Para obter o ID, faça login no Certificate Management Service console, crie um certificado e localize o ID na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids

Os IDs de certificados adicionais. Separe vários IDs de certificados com vírgula (,). Para obter os IDs, faça login no Certificate Management Service console, crie os certificados e localize seus IDs na página SSL Certificate Management.

A figura a seguir mostra um exemplo:

image

v2.13.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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 típicas para grupos de servidores

Algoritmo de agendamento

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

Description

Supported CCM versions

O algoritmo de agendamento. Valores válidos:

  • wrr: round-robin ponderado. Servidores de backend com maior peso recebem mais requisições.

  • rr: round-robin. As requisições são distribuídas sequencialmente entre os servidores de backend.

  • sch: hash de IP de origem. Requisições provenientes do mesmo endereço IP de origem são sempre roteadas para o mesmo servidor de backend.

  • tch: hash de tupla quádrupla. O roteamento das requisições baseia-se em um hash consistente de uma tupla quádrupla (IP de origem, IP de destino, porta de origem e porta de destino). Isso garante que o tráfego do mesmo fluxo seja sempre direcionado ao mesmo servidor de backend.

  • wlc: menor número de conexões ponderado. A distribuição das requisições considera tanto o peso quanto a carga atual (número de conexões ativas) de cada servidor de backend. Se os servidores tiverem o mesmo peso, aquele com menos conexões ativas tem maior probabilidade de receber a próxima requisição.

Valor padrão: wrr

Para obter mais informações sobre os valores desta annotation, consulte o parâmetro Scheduler na referência da API CreateServerGroup.

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Drenagem de conexão

annotation: Várias annotations estão disponíveis, conforme descrito na tabela a seguir.

Annotation

Description

Supported CCM versions

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

Define se a drenagem de conexão deve ser ativada. Quando ativada, ocorre o seguinte comportamento ao remover um servidor de backend ou quando ele falha nas verificações de integridade:

  • on: Mantém as conexões existentes ativas durante o tempo limite especificado, permitindo que sejam encerradas normalmente.

  • off: O balanceador de carga não encerra as conexões existentes. Elas são fechadas apenas quando o cliente se desconecta ou a sessão expira.

Valor padrão: off

v2.5.0 ou posterior

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

O período de tempo limite para a drenagem de conexão.

  • Unidade: segundos.

  • Valores válidos: 0 a 900. O valor 0 encerra as conexões imediatamente.

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Preservação do IP do cliente

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

Description

Supported CCM versions

Define se a preservação do IP do cliente deve ser ativada. Valores válidos:

  • on: Ativa o recurso.

  • off: Desativa o recurso.

Valor padrão: on

v2.5.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Verificações de integridade TCP

annotation: Várias annotations estão disponíveis, conforme descrito na tabela a seguir. Para configurar verificações de integridade TCP, todas as annotations listadas abaixo são obrigatórias. Por padrão, as verificações de integridade estão ativadas para portas TCP.

Annotation

Description

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

Define se as verificações de integridade devem ser ativadas. Valores válidos:

  • on: Ativa as verificações de integridade.

  • off: Desativa as verificações de integridade.

Valor padrão: on

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

O protocolo de verificação de integridade. Valores válidos:

  • tcp

  • udp

  • http

Valor padrão: tcp

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

A porta no servidor de backend usada para verificações de integridade. Valores válidos: 0 a 65535. O valor padrão 0 indica que a porta do próprio servidor de backend será utilizada.

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

O tempo máximo de espera por uma resposta de verificação de integridade. Unidade: segundos. Valores válidos: 1 a 300.

Valor padrão: 5

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

O número de verificações de integridade bem-sucedidas consecutivas necessárias para considerar um servidor de backend como íntegro. Valores válidos: 2 a 10.

Valor padrão: 2

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

O número de falhas consecutivas nas verificações de integridade necessárias para considerar um servidor de backend como não íntegro. Valores válidos: 2 a 10.

Valor padrão: 2

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

O intervalo entre verificações de integridade consecutivas. Unidade: segundos. Valores válidos: 1 a 50.

Valor padrão: 5

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Verificações de integridade UDP

annotation: Várias annotations estão disponíveis e todas são obrigatórias. Para usar verificações de integridade UDP, certifique-se de que todas as portas definidas no Service utilizem o protocolo UDP.

Annotation

Description

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

Define se as verificações de integridade devem ser ativadas. Valores válidos:

  • on: Ativa as verificações de integridade.

  • off: Desativa as verificações de integridade.

Valor padrão: on

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

O protocolo de verificação de integridade. Valores válidos:

  • tcp

  • udp

  • http

Valor padrão: tcp

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

A porta do servidor usada para verificações de integridade. Valores válidos: [0, 65535]. O valor padrão é 0, o que indica que a porta real do servidor de backend será utilizada.

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

O tempo limite de resposta para uma única verificação de integridade. Se ocorrer um tempo limite, a verificação atual será considerada uma falha. Unidade: segundos. Intervalo de valores: [1, 300]. Valor padrão: 5.

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

Um servidor de backend é considerado íntegro após passar pelo número especificado de verificações de integridade consecutivas. Valores válidos: [2, 10]. Valor padrão: 2.

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

Valor padrão: 2

O servidor de backend é considerado não íntegro após este número de falhas consecutivas nas verificações de integridade. Valores válidos: [2, 10]. Valor padrão: 2.

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

O intervalo entre verificações de integridade consecutivas. Unidade: segundos. Intervalo de valores: [1, 300]. Valor padrão: 5.

Este valor deve ser maior que o valor de health-check-connect-timeout. Caso contrário, a verificação de integridade pode não funcionar corretamente.
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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Verificações de integridade HTTP

annotation: Várias annotations estão disponíveis, conforme descrito na tabela a seguir. Para configurar verificações de integridade HTTP, todas as annotations listadas abaixo são obrigatórias. Por padrão, as verificações de integridade usam o protocolo TCP.

Annotation

Description

Supported CCM versions

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

Define se as verificações de integridade devem ser ativadas. Valores válidos:

  • on: Ativa as verificações de integridade.

  • off: Desativa as verificações de integridade.

Valor padrão: on

v2.5.0 ou posterior

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

O protocolo de verificação de integridade. Valores válidos:

  • tcp

  • udp

  • http

Valor padrão: tcp

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

O caminho para a verificação de integridade. Deve ter de 1 a 80 caracteres, começar com uma barra (/) e pode conter letras, dígitos e os seguintes caracteres especiais: - . _ % / ? # &. Para obter mais informações, consulte CreateServerGroup.

Nota

Este parâmetro é válido apenas quando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type está definido como http.

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

O nome de domínio usado para verificações de integridade. Valores válidos:

  • $SERVER_IP: O endereço IP privado do servidor de backend.

  • domain: Um nome de domínio específico. O nome de domínio deve ter de 1 a 80 caracteres e pode conter apenas letras minúsculas, dígitos, hifens (-) e pontos (.).

Nota

Este parâmetro é válido apenas quando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type está definido como http.

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

A porta no servidor de backend usada para verificações de integridade. Valores válidos: 0 a 65535. O valor padrão 0 indica que a porta do próprio servidor de backend será utilizada.

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

O tempo máximo de espera por uma resposta de verificação de integridade. Unidade: segundos. Valores válidos: 1 a 300.

Valor padrão: 5

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

O número de verificações de integridade bem-sucedidas consecutivas necessárias para considerar um servidor de backend como íntegro. Valores válidos: 2 a 10.

Valor padrão: 2

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

O número de falhas consecutivas nas verificações de integridade necessárias para considerar um servidor de backend como não íntegro. Valores válidos: 2 a 10.

Valor padrão: 2

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

O intervalo entre verificações de integridade consecutivas. Unidade: segundos. Valores válidos: 1 a 50.

Valor padrão: 5

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

O método de verificação de integridade. Valores válidos:

  • GET

  • HEAD

Nota

Este parâmetro é válido apenas quando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type está definido como http.

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Tipo de grupo de servidores

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

Description

Supported CCM versions

O tipo do grupo de servidores. Valores válidos:

  • Ip: Endereço IP. Adicione servidores de backend especificando seus endereços IP.

  • Instance (padrão): Adicione instâncias ECS ou interfaces de rede elásticas (ENIs) como servidores de backend.

Valor padrão: Instance

Para obter mais informações sobre os tipos de grupos de servidores NLB, consulte Server groups.

v2.8.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Servidores de backend IPv6

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

Description

Supported CCM versions

A versão IP dos servidores de backend no grupo de servidores.

  • ipv4: O grupo de servidores contém apenas servidores de backend IPv4.

  • ipv6: O grupo de servidores contém apenas servidores de backend IPv6.

  • DualStack: O grupo de servidores contém servidores de backend IPv4 e IPv6, e a afinidade de versão IP é ativada automaticamente.

Valor padrão: ipv4

Nota

Ao adicionar servidores de backend IPv4 e IPv6 a um grupo de servidores, o uso da cota de pods é duplicado.

  • ipv6: v2.9.1 ou posterior

  • DualStack: v2.14.0 ou posterior

Reutilização de um grupo de servidores

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

Esta annotation permite reutilizar um grupo de servidores existente. Ela entra em vigor apenas quando você reutiliza uma instância NLB existente. Para ver um exemplo, consulte Deploy services across clusters by reusing a load balancer.

Peso de tráfego do Service

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

Em cenários onde vários Services reutilizam a mesma instância NLB, use esta annotation para definir o peso de tráfego do Service atual. Esta annotation entra em vigor apenas quando você reutiliza um grupo de servidores existente. Para ver um exemplo, consulte Deploy services across clusters by reusing a load balancer.

Ignorar atualizações de peso

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

Description

Supported CCM versions

Quando definido como on, o CCM não atualiza os pesos dos servidores de backend no grupo de servidores durante a sincronização do Service. Isso é útil se você gerencia os pesos dos servidores de backend usando outros mecanismos.

  • on

  • off

Valor padrão: off

v2.11.1 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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

Peso padrão do servidor de backend

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

Description

Supported CCM versions

O peso padrão dos servidores de backend no grupo de servidores. Um peso maior significa que o servidor recebe uma parcela maior do tráfego recebido.

A quantidade aumenta.

Valores válidos: 0 a 100. Se esta annotation não for configurada, o sistema usará um peso padrão com base no tipo de rede.

Esta configuração não entra em vigor quando a instância de backend é uma instância ECS e o externalTrafficPolicy do Service está definido como Local.

v2.14.0 ou posterior

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
    # Sets the default weight of servers in the server group to 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  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