Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure an NLB with annotations

Última atualização: Jul 04, 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 grupos de servidores.

Índice

Categoria

Categoria do recurso

Link de configuração

Pré-requisitos

Operações do NLB

Criação

Configuração da instância

Operações de listener

Criação

Configuração do listener

Configuração de segurança

Operações de grupo de servidores

Configuração do servidor

Observações

  • Certifique-se de que seu cluster esteja na versão v1.24 ou posterior e que o add-on Cloud Controller Manager (CCM) esteja na versão v2.5.0 ou posterior. Para atualizar o cluster, consulte Atualizar manualmente um cluster; para atualizar o add-on, consulte Gerenciar add-ons.

  • Na definição do Service, defina spec.loadBalancerClass como alibabacloud.com/nlb. Se esse parâmetro não for 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. Não é possível converter o tipo de balanceador de carga de CLB para NLB ou vice-versa.

  • Não é possível gerenciar instâncias do NLB no console do ACK. Utilize comandos kubectl para realizar todas as operações de gerenciamento.

Operações do NLB

Criar um NLB público

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

Descrição

Versões suportadas do CCM

Especifica 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
  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

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

Descrição

Versões suportadas do CCM

Especifica o tipo de rede do NLB. Altere o valor desta annotation 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  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

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

Descrição

Versões suportadas do CCM

Especifica 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:
    # For example, cn-hangzhou-k:vsw-i123456:10.1.0.1,cn-hangzhou-j:vsw-j654321:10.2.0.1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}:${private-ipv4-A},${zone-B}:${vsw-B}:${private-ipv4-B}"
  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

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

Descrição

Versões suportadas do CCM

Especifica 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:
    # If you do not need a private IP address, leave the private IP address field empty.
    # For example, cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
  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

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

Descrição

Versões suportadas do CCM

Especifica o nome da instância do balanceador de carga. O nome 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 (-).

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # The name of the NLB instance.
  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

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

Descrição

Versões suportadas do CCM

Especifica o grupo de recursos para o balanceador de carga. O ID do grupo de recursos não pode ser alterado após a definição.

Encontre o ID do grupo de recursos no console de Gerenciamento de Recursos.

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:  "${your-resource-group-id}" # The ID of the resource group.
  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

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

Para anexar servidores backend IPv6, consulte Anexar servidores backend IPv6.

Descrição

Versões suportadas do CCM

O modo kube-proxy do cluster deve ser IPVS.

Especifica 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.

    • 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
  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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Adicionar tags adicionais

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

Descrição

Versões suportadas do CCM

Adicione tags adicionais. 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 annotation, 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
  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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Usar um balanceador de carga existente

Importante

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

Annotation: Múltiplas annotations são utilizadas, conforme descrito na tabela a seguir.

Annotation

Descrição

Versões suportadas do CCM

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

Especifica 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 dos listeners do NLB devem ser sincronizadas com base na configuração do Service. Valores válidos:

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

  • 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-id: "${your-nlb-id}" # The ID of the NLB instance.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Vincular um pacote de largura de banda compartilhada

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

Descrição

Versões suportadas do CCM

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

Encontre o ID do pacote de largura de banda compartilhada 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx" 
  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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar o encaminhamento entre zonas

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

Descrição

Versões suportadas do CCM

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled: "off" 
  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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

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

Campo: .spec.loadBalancerRanges

Descrição

Versões suportadas do CCM

Este recurso aplica-se apenas a instâncias de NLB criadas e gerenciadas pelo CCM. Não há suporte para instâncias reutilizadas.

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. Se outros grupos de segurança estiverem 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
  name: nginx
  namespace: default
spec:
  # Specify the allowed source IP address CIDR blocks.
  loadBalancerSourceRanges:
    - 10.0.0.0/8
    - 172.16.0.0/16
  externalTrafficPolicy: Local
  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

Annotation: Múltiplas annotations são utilizadas, conforme descrito na tabela a seguir.

Annotation

Descrição

Versões suportadas do CCM

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

O modo kube-proxy do cluster deve ser IPVS. Esta annotation especifica 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.

    • 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

Especifica 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 Criar e gerenciar um gateway IPv6.

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet # Specify the IPv6 network type as public.
  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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Operações de listener

Definir um grupo de segurança do listener

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

Descrição

Versões suportadas do CCM

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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # Separate multiple security group IDs with a comma (,).
  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 suportadas do CCM

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

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.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  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:
  externalTrafficPolicy: Local
  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

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 annotation 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.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Criar um listener TCPSSL

Annotation: Consulte a tabela a seguir para ver as annotations necessárias.

Annotation

Descrição

Versões suportadas do CCM

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 console do Certificate Management Service, crie um certificado e encontre 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 persistência de endereço IP do cliente ativada. Isso significa que você não pode configurar as annotations 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 através do NLB, consulte Obter endereços IP reais de clientes em servidores backend através do 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar um intervalo de portas do listener

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

Descrição

Versões suportadas do CCM

Este recurso requer o plugin de rede Terway.

Configure um listener para escutar em um intervalo de portas especificado. A instância do NLB encaminha o tráfego desse intervalo de portas para o mesmo intervalo nos servidores backend. Por exemplo, se você configurar o intervalo de portas 80-100, o tráfego para as portas 80 a 100 na instância do NLB será encaminhado para as portas 80 a 100 nos servidores 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.
    # Configure listeners for the 80-100 and 400-500 port ranges.
    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
    # This port configuration is mapped to the 80-100 range.
    port: 80
    protocol: TCP
    # The targetPort specifies the health check port for the backend servers and must be an integer.
    targetPort: 80
  - name: https
    # This port configuration is mapped to the 400-500 range.
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Ativar autenticação mútua

Annotation: Consulte a tabela a seguir para ver as annotations necessárias.

Annotation

Descrição

Versões suportadas do CCM

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 console do Certificate Management Service, crie um certificado e encontre 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 console do Certificate Management Service 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    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:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Definir uma política de segurança TLS

Annotation: Consulte a tabela a seguir para ver as annotations necessárias.

Annotation

Descrição

Versões suportadas do CCM

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 console do Certificate Management Service, crie um certificado e encontre 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Ativar Proxy Protocol

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

Descrição

Versões suportadas do CCM

Define se o Proxy Protocol deve ser usado para passar endereços IP de clientes aos servidores 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 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "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

Passar informações adicionais via Proxy Protocol

Annotation: Consulte a tabela a seguir para ver as annotations necessárias.

Annotation

Descrição

Versões suportadas do CCM

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 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 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 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 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 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.
    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:
  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

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

Descrição

Versões suportadas do CCM

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 de 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
  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

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

Descrição

Versões suportadas do CCM

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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
  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

Annotation: Consulte a tabela a seguir para ver as annotations necessárias.

Annotation

Descrição

Versões suportadas do CCM

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 console do Certificate Management Service, crie um certificado e encontre 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 Application-Layer Protocol Negotiation (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 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy: "HTTP1Only" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Configurar certificados adicionais

Annotation

Descrição

Versões suportadas do CCM

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 console do Certificate Management Service, crie um certificado e encontre 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 console do Certificate Management Service, crie os certificados e encontre 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.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids: "${CertIdentifier-1},${CertIdentifier-2}" # Separate multiple additional certificate IDs with a comma (,).
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  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

Descrição

Versões suportadas do CCM

O algoritmo de agendamento. Valores válidos:

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

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

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

  • tch: hash de quádrupla. As requisições são roteadas com base em um hash consistente de uma quádrupla (endereço IP de source, endereço IP de destino, porta de source e porta de destino). Isso garante que o tráfego do mesmo fluxo seja sempre direcionado ao mesmo servidor backend.

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

Valor padrão: wrr

Para 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
  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

Draining de conexão

annotation: Múltiplas annotations estão disponíveis, conforme descrito na tabela a seguir.

Annotation

Descrição

Versões suportadas do CCM

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

Define se o draining de conexão deve ser ativado. Se ativado, o seguinte comportamento ocorre quando um servidor backend é removido ou falha nas verificações de integridade:

  • on: Mantém as conexões existentes ativas durante o tempo limite especificado, permitindo que sejam fechadas 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 o draining de conexão.

  • Unidade: segundos.

  • Valores válidos: 0 a 900. Um valor de 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
    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:
  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

Descrição

Versões suportadas do CCM

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "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

Verificações de integridade TCP

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

Annotation

Descrição

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 backend usada para verificações de integridade. Valores válidos: 0 a 65535. O valor padrão 0 indica que a porta do servidor backend é 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 que um servidor backend seja considerado í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 na verificação de integridade necessárias para que um servidor backend seja considerado 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
    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:
  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: Múltiplas 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 usem o protocolo UDP.

Annotation

Descrição

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 backend é 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 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 backend é considerado não íntegro após este número de falhas consecutivas na verificação 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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "udp"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "3"
    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:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Verificações de integridade HTTP

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

Annotation

Descrição

Versões suportadas do CCM

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 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 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 backend usada para verificações de integridade. Valores válidos: 0 a 65535. O valor padrão 0 indica que a porta do servidor backend é 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 que um servidor backend seja considerado í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 na verificação de integridade necessárias para que um servidor backend seja considerado 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
    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"
    # Set the health check method. This annotation is optional.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  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

Descrição

Versões suportadas do CCM

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

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

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

Valor padrão: Instance

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

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
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
  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 backend IPv6

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

Descrição

Versões suportadas do CCM

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

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

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

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

Valor padrão: ipv4

Nota

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

  • ipv6: v2.9.1 ou posterior

  • DualStack: v2.14.0 ou posterior

Reutilizar 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 de NLB existente. Para um exemplo, consulte Implantar serviços em clusters reutilizando um balanceador de carga.

Peso de tráfego do serviço

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

Em cenários onde múltiplos Services reutilizam a mesma instância de NLB, use esta annotation para definir o peso de tráfego para o Service atual. Esta annotation entra em vigor apenas quando você reutiliza um grupo de servidores existente. Para um exemplo, consulte Implantar serviços em clusters reutilizando um balanceador de carga.

Ignorar atualizações de peso

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

Descrição

Versões suportadas do CCM

Quando definido como on, o CCM não atualiza os pesos dos servidores backend no grupo de servidores durante a sincronização do Service. Isso é útil se você gerencia os pesos dos servidores 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
    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

Peso padrão do servidor backend

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

Descrição

Versões suportadas do CCM

O peso padrão dos servidores 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 usa um peso padrão com base no tipo de rede.

Esta configuração não entra em vigor quando a instância 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