Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Common ELB configurations using annotations

Última atualização: Jul 05, 2026

Adicione anotações a um arquivo YAML de Service para configurar instâncias do Edge Load Balancer (ELB), listeners, grupos de servidores de backend e endereços IP elásticos de borda (EIPs de borda) no Edge Node Service (ENS).

Observações de uso

  • As chaves e os valores das anotações diferenciam maiúsculas de minúsculas. Use apenas letras minúsculas.

  • Defina spec.type como LoadBalancer.

  • Defina spec.loadBalancerClass como alibabacloud.com/elb.

  • Todos os valores de anotação devem ser strings. Codifique tipos não string da seguinte forma:

    Tipo

    Codificação

    Exemplo

    Booleano

    String entre aspas

    "true"

    Inteiro

    String entre aspas

    "10"

    Lista

    String separada por vírgulas

    "k1=v1,k2=v2"

Referência rápida

A tabela a seguir lista todas as anotações compatíveis. Clique em um link para acessar a descrição completa.

Anotação

Padrão

Seção

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

elb.s2.small

Tipo de instância ELB

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-pay-type

PostPaid

Método de faturamento do ELB

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

internet

Modo de exposição do serviço

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-bandwidth

10

Configuração de EIP

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-isp

Nenhum

Configuração de EIP

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-instance-charge-type

PostPaid

Configuração de EIP

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-internet-charge-type

95BandwidthByMonth

Configuração de EIP

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label

N/A

Rótulos de servidores de backend

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-weight

base=100

Pesos dos servidores de backend

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

rr

Algoritmo de agendamento

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout

0

Persistência de sessão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout

500

Timeout de conexão

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

3

Verificações de integridade

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

3

Verificações de integridade

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

2

Verificações de integridade

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

5

Verificações de integridade

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user

Usar uma instância ELB existente

service.openyurt.io/elb-force-override-listeners

Compartilhar uma instância ELB entre serviços

Instâncias de ELB

Importante

Não é possível atualizar a configuração de uma instância ELB após a criação. Para obter detalhes sobre tipos de instância e faturamento, consulte CreateLoadBalancer.

Criar uma instância ELB gerenciada pelo ECM

O EdgeControllerManager (ECM) cria e gerencia automaticamente as instâncias de ELB ao criar um Service. Especifique quais pools de nós do ENS receberão instâncias de ELB usando a anotação service.openyurt.io/nodepool-labelselector (NodePoolSelector).

Sintaxe do NodePoolSelector:

Formato

Lógica

Exemplo

key1=val1,key2=val2

AND — o pool de nós deve corresponder a todos os rótulos

env=prod,region=cn

key in (val1,val2)

OR — o pool de nós deve corresponder a qualquer valor

region in (cn-hangzhou,cn-beijing)

A anotação openyurt.io/topologyKeys: openyurt.io/nodepool restringe o encaminhamento de tráfego apenas aos Pods no pool de nós especificado.

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool        # Restrict traffic to Pods in the selected node pool.
    service.openyurt.io/nodepool-labelselector: key1=val1 # Select ENS node pools by label.
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Especificar um tipo de instância ELB

Anotação

Descrição

Padrão

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

Tipo de instância ELB. Para tipos disponíveis, consulte Tipos de instância e faturamento.

elb.s2.small

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-pay-type

Método de faturamento. Há suporte apenas para pagamento conforme o uso (PostPaid).

PostPaid

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: elb.s1.small
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-pay-type: PostPaid

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: elb.s1.small
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-pay-type: PostPaid
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Especificar o modo de exposição do serviço

Anotação

Descrição

Padrão

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

internet: expõe o Service à Internet (requer um EIP). intranet: expõe o Service apenas a uma rede privada.

internet

Importante

Por padrão, as instâncias de ELB ficam expostas à Internet. Para restringir o acesso apenas a redes privadas, defina esta anotação como intranet.

Exemplo:

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

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Configurar definições de EIP para exposição na Internet

Para expor um Service à Internet, adquira uma instância de ELB voltada para a rede interna e um EIP. Use as anotações a seguir para configurar o EIP.

Anotação

Descrição

Padrão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-bandwidth

Largura de banda máxima de Internet do EIP. Unidade: Mbit/s.

10

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-isp

ISP do EIP: cmcc (China Mobile), unicom (China Unicom), elecom (China Telecom).

Nenhum

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-instance-charge-type

Método de faturamento do EIP. Há suporte apenas para pagamento conforme o uso (PostPaid).

PostPaid

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-internet-charge-type

Método de faturamento de largura de banda de Internet. Há suporte apenas para pagamento pelo percentil 95 mensal (95BandwidthByMonth).

95BandwidthByMonth

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-bandwidth: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-isp: cmcc
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-instance-charge-type: "PostPaid"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-internet-charge-type: "95BandwidthByMonth"

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool          # Restrict traffic to Pods in the selected node pool.
    service.openyurt.io/nodepool-labelselector: key1=val1   # Select ENS node pools by label.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-bandwidth: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-isp: cmcc
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-instance-charge-type: "PostPaid"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-internet-charge-type: "95BandwidthByMonth"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Grupos de servidores de backend

Por padrão, o ECM adiciona todos os nós do ENS na Virtual Private Cloud (VPC) como servidores de backend (modo cluster). Para adicionar apenas os nós que hospedam Pods da aplicação como servidores de backend, defina spec.externalTrafficPolicy como Local.

Se vários Services compartilharem uma única instância de ELB, externalTrafficPolicy deverá ser definido como Cluster (padrão). Não há suporte para o modo Local neste caso.
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool          # Restrict traffic to Pods in the selected node pool.
    service.openyurt.io/nodepool-labelselector: key1=val1   # Select ENS node pools by label.
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb
  externalTrafficPolicy: Local

Filtrar servidores de backend por rótulo

Anotação

Descrição

Padrão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label

Rótulos dos nós de trabalho a serem adicionados como servidores de backend. Separe vários rótulos com vírgulas (,). A relação lógica entre vários rótulos é AND. Exemplo: k1=v1,k2=v2.

N/A

Para excluir nós de borda específicos do grupo de servidores de backend, adicione o rótulo node.kubernetes.io/exclude-from-external-load-balancers=true a esses nós.

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: key2=val2

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: key2=val2
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb
  externalTrafficPolicy: Local

Configurar pesos dos servidores de backend

Anotação

Descrição

Padrão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-weight

Pesos por nó para listeners com round-robin ponderado (WRR). Formato: base=<weight>,<node-name>=<weight>,.... base define o peso padrão para todos os servidores de backend; nós nomeados substituem esse padrão.

base=100

Exemplo — definir um peso padrão de 50 e substituir pesos para node1 e node2:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-weight: base=50,node1=80,node2=90

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-weight: base=50,node1=80,node2=90
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Listeners

O ECM cria listeners automaticamente com base em spec.ports. O cluster aloca as portas dos servidores de backend por padrão. Para escutar em uma porta específica do servidor de backend, defina nodePort na definição da porta.

# ...
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    nodePort: 30080   # Pin the backend server port.
    targetPort: 80

Configurar um algoritmo de agendamento

Anotação

Descrição

Padrão

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

Algoritmo de agendamento para listeners: wrr (round-robin ponderado — servidores com maior peso recebem mais requisições), rr (round-robin — requisições distribuídas uniformemente), wlc (menor número de conexões ponderado — distribui com base no peso e na contagem de conexões ativas), sch (hashing consistente de IP de origem — o mesmo IP de origem sempre vai para o mesmo servidor), qch (hashing consistente de ID QUIC (Quick UDP Internet Connection) — o mesmo ID QUIC sempre vai para o mesmo servidor), iqch (hashing consistente de CID iQUIC — o mesmo segundo, terceiro e quarto bytes do CID iQUIC sempre vão para o mesmo servidor).

rr

Exemplo:

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

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    nodePort: 30080
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Configurar persistência de sessão para listeners TCP

Anotação

Descrição

Padrão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout

Período de persistência de sessão para listeners TCP. Aplica-se a todos os listeners TCP na instância ELB. Unidade: segundos. Valores válidos: 0–3600. Defina como 0 para desativar a persistência de sessão.

0

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "300"

Configurar o timeout de conexão para listeners TCP

Anotação

Descrição

Padrão

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout

Período de timeout de conexão para listeners TCP. Unidade: segundos. Valores válidos: 10–900.

500

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "900"

YAML completo combinando timeout de conexão com outras configurações de listener:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "900"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    nodePort: 30080
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Configurar verificações de integridade

Anotação

Descrição

Valores válidos

Padrão

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

Número de verificações de integridade bem-sucedidas consecutivas necessárias antes que um servidor de backend seja marcado como disponível.

2–10

3

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

Número de verificações de integridade com falha consecutivas necessárias antes que um servidor de backend seja marcado como indisponível.

2–10

3

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

Intervalo entre verificações de integridade consecutivas. Unidade: segundos.

2–10

2

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

Timeout para resposta de uma verificação de integridade. Se um servidor de backend não responder dentro desse período, a verificação falhará. Unidade: segundos.

1–300

5

Exemplo:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "2"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "5"

YAML completo:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool
    service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "5"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "5"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "2"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "5"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    nodePort: 30080
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Configuração avançada

Usar uma instância ELB existente

Para usar uma instância de ELB autogerenciada em vez de permitir que o ECM crie uma, siga estas etapas.

  1. Crie o Service com a anotação alibaba-cloud-loadbalancer-managed-by-user: "true":

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      namespace: default
      annotations:
        openyurt.io/topologyKeys: openyurt.io/nodepool          # Restrict traffic to Pods in the selected node pool.
        service.openyurt.io/nodepool-labelselector: key1=val1
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user: "true"
    spec:
      ports:
      - name: nginx-80
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
      loadBalancerClass: alibabacloud.com/elb
  2. Localize o PoolService correspondente ao pool de nós (ENS VPC) e adicione uma anotação com o ID da instância ELB:

    kubectl annotate ps {<SERVICENAME>-NodePoolID} service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id=<lb_ID>

    Substitua <SERVICENAME> pelo nome do PoolService do pool de nós (ENS VPC) e <lb_ID> pelo ID da instância ELB.

Compartilhar uma instância ELB entre vários serviços

Para configurar vários Services de modo que compartilhem uma única instância de ELB, atenda aos seguintes requisitos:

  • Defina externalTrafficPolicy como Cluster.

  • Use uma instância de ELB autogerenciada e adicione uma anotação com seu ID em cada Service (consulte Usar uma instância ELB existente).

  • Para habilitar o acesso à Internet usando EIPs, crie e gerencie manualmente um EIP.

  • Defina service.openyurt.io/elb-force-override-listeners: "true" para permitir a sobrescrita de listeners.

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool          # Restrict traffic to Pods in the selected node pool.
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.openyurt.io/elb-force-override-listeners: "true"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user: "true"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb