Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Configure an NLB with annotations

Última actualización: Sep 23, 2026

Las anotaciones en el archivo YAML de un Service permiten habilitar funciones adicionales de balanceo de carga para su Network Load Balancer (NLB). Por ejemplo, puede especificar el tipo de red del NLB, habilitar la protección contra modificaciones y configurar la autenticación mutua. Este tema explica cómo usar estas anotaciones para configurar el NLB. Las configuraciones se organizan en tres tipos de recursos: la instancia de NLB, los listeners y los server groups.

Índice

Categoría

Categoría de función

Enlace de configuración

Prerequisites

NLB operations

Creación

Configuración de instancia

Listener operations

Creación

Configuración de listener

Configuración de seguridad

Server group operations

Configuración de servidor

Notas

  • Asegúrese de que su clúster tenga la versión v1.24 o posterior y que el complemento Cloud Controller Manager (CCM) sea de la versión v2.5.0 o posterior. Para actualizar el clúster, consulte Manually upgrade a cluster; para actualizar el complemento, consulte Manage components.

  • En la definición del Service, establezca spec.loadBalancerClass como alibabacloud.com/nlb. Si no se especifica este parámetro, se crea un Classic Load Balancer (CLB) de forma predeterminada.

  • Una vez creado el Service, no es posible modificar el campo spec.loadBalancerClass. Tampoco se permite convertir el tipo de load balancer de CLB a NLB ni viceversa.

  • No es posible gestionar instancias de NLB desde la consola de ACK. Debe utilizar comandos de kubectl para todas las operaciones de gestión.

Operaciones de NLB

Crear un NLB público

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descripción

Versiones de CCM compatibles

Especifica la zona, el vSwitch, la dirección IP privada y la información de EIP para el NLB. El formato es el siguiente:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe varias entradas con una coma (,).

  • Zona e ID de vSwitch: obligatorio. Especifique como mínimo dos, por ejemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para consultar la lista de regiones y zonas compatibles con NLB, visite la consola de NLB.

  • Dirección IP privada: opcional.

  • ID de instancia de EIP: opcional.

Zonas e ID de vSwitch: v2.5.0 o posterior

Direcciones IP privadas y EIP: v2.12.1 o 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

Crear un NLB privado

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

Descripción

Versiones de CCM compatibles

Especifica el tipo de red del NLB. Puede cambiar el valor de esta anotación para alternar el NLB entre público y privado. Valores válidos:

  • internet: un NLB público.

  • intranet: un NLB privado.

Valor predeterminado: internet

Inicie sesión en la consola de NLB para consultar las regiones y zonas compatibles. Se requieren como mínimo dos zonas. Separe varias zonas con comas, por ejemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

v2.5.0 o 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 una dirección IP privada

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descripción

Versiones de CCM compatibles

Especifica la zona, el vSwitch, la dirección IP privada y la información de EIP para el NLB. El formato es el siguiente:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe varias entradas con una coma (,).

  • Zona e ID de vSwitch: obligatorio. Especifique como mínimo dos pares. Por ejemplo, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para consultar la lista de regiones y zonas compatibles con NLB, visite la consola de NLB.

  • Dirección IP privada: opcional.

  • ID de instancia de EIP: opcional.

  • Zonas e ID de vSwitch: v2.5.0 o posterior

  • Direcciones IP privadas y EIP: v2.12.1 o 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 un ID de instancia de EIP

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Descripción

Versiones de CCM compatibles

Especifica la zona, el vSwitch, la dirección IP privada y la información de EIP para el NLB. El formato es el siguiente:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Separe varias entradas con una coma (,).

  • Zonas e ID de vSwitch: obligatorio. Especifique como mínimo dos pares, como cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Para consultar la lista de regiones y zonas compatibles con NLB, visite la consola de NLB.

  • Dirección IP privada: opcional.

  • ID de instancia de EIP: opcional.

Zonas e ID de vSwitch: v2.5.0 o posterior

Direcciones IP privadas y EIP: v2.12.1 o 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 el nombre del load balancer

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

Descripción

Versiones de CCM compatibles

Especifica el nombre de la instancia de load balancer. El nombre debe tener entre 2 y 128 caracteres, comenzar con una letra o un carácter chino, y puede contener dígitos, puntos (.), guiones bajos (_) y guiones (-).

v2.5.0 o 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 un resource group

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

Descripción

Versiones de CCM compatibles

Especifica el resource group para el load balancer. El ID del resource group no se puede modificar después de establecerlo.

Puede encontrar el ID del resource group en la consola de Resource Management.

v2.5.0 o 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

Crear un NLB de doble pila

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Para adjuntar servidores de backend IPv6, consulte Attach IPv6 backend servers.

Descripción

Versiones de CCM compatibles

El modo kube-proxy del clúster debe ser IPVS.

Especifica la versión del protocolo IP del NLB. La versión del protocolo IP no se puede modificar después de la creación. Valores válidos:

  • ipv4: IPv4.

  • DualStack: compatible con IPv4 e IPv6.

    • Los dos vSwitch especificados en service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps deben tener IPv6 habilitado.

    • La dirección IPv6 generada solo es accesible desde entornos con IPv6 habilitado.

Valor predeterminado: ipv4

v2.5.0 o 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

Agregar etiquetas adicionales

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

Descripción

Versiones de CCM compatibles

Puede agregar etiquetas adicionales. Utilice una coma (,) para separar varias etiquetas. Por ejemplo, k1=v1,k2=v2. En las versiones 2.10.0 y posteriores, es posible modificar las etiquetas de instancias existentes y reutilizadas.

Importante

Después de agregar esta anotación, cualquier modificación manual de etiquetas aplicada a la instancia de load balancer en la consola se sobrescribirá.

v2.5.0 o 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 un load balancer existente

Importante

No agregue ni modifique la anotación de reutilización en un Service de tipo LoadBalancer existente. Hacerlo podría provocar un error en la reutilización o impedir que se libere el load balancer creado por CCM.

Anotación: se utilizan varias anotaciones, tal como se describe en la siguiente tabla.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el ID del load balancer existente.

v2.5.0 o posterior

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

Indica si se sincronizan las configuraciones de los listeners de NLB según la configuración del Service. Valores válidos:

  • true: CCM crea, actualiza y elimina listeners de NLB según la configuración del Service.

  • false: CCM no procesa los listeners de NLB.

Valor predeterminado: 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 un paquete de ancho de banda compartido

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

Descripción

Versiones de CCM compatibles

Especifica el ID del paquete de ancho de banda compartido que se va a vincular.

Puede encontrar el ID del paquete de ancho de banda compartido en la consola de VPC.

v2.9.1 o 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 el reenvío entre zonas

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled

Descripción

Versiones de CCM compatibles

Indica si se habilita el reenvío entre zonas. Valores válidos:

  • on

  • off

Valor predeterminado: on

v2.13.0 o 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 una lista de permitidos de direcciones IP de origen

Campo: .spec.loadBalancerRanges

Descripción

Versiones de CCM compatibles

Esta función solo aplica a instancias de NLB creadas y gestionadas por CCM. No es compatible con instancias reutilizadas.

Cuando configura este campo, CCM crea automáticamente un security group, establece las reglas de acceso necesarias y asocia el security group con la instancia de NLB. Si no configura este campo o lo deja vacío, no se asocia ningún security group.

Valor predeterminado: Ninguna

Importante
  • Agregar o modificar este campo sobrescribe las asociaciones de security group existentes en el NLB. Si otros security groups se asociaron manualmente al NLB, proceda con precaución.

  • No modifique el security group ni sus etiquetas creadas por CCM. De lo contrario, la asociación podría eliminarse o las reglas podrían sobrescribirse.

v2.14.0 o 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 el tipo de red IPv6

Anotación: se utilizan varias anotaciones, como se describe en la siguiente tabla.

Anotación

Descripción

Versiones de CCM compatibles

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

El modo kube-proxy del clúster debe ser IPVS. Esta anotación especifica la versión del protocolo IP para el NLB. La versión del protocolo IP no se puede cambiar después de crearlo. Valores válidos:

  • ipv4: IPv4.

  • DualStack: admite tanto IPv4 como IPv6.

    • Ambos vSwitch especificados en service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps deben tener IPv6 habilitado.

    • La dirección IPv6 generada solo es accesible desde entornos con IPv6 habilitado.

Valor predeterminado: ipv4

v2.5.0 o posterior

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

Especifica el tipo de red de la dirección IPv6 del NLB. Valores válidos:

  • intranet: IPv6 privada.

  • internet: IPv6 pública.

Valor predeterminado: intranet

Nota

Para usar una dirección IPv6 pública, debe existir una puerta de enlace IPv6 en la VPC donde se despliega la instancia de NLB. Para obtener más información, consulte Create and manage an IPv6 gateway.

v2.9.1 o 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

Operaciones de listener

Establecer un security group de listener

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

Descripción

Versiones de CCM compatibles

Especifica los ID de los security groups que se van a asociar con el listener. Separe varios ID con una coma (,), por ejemplo, sg-aaaaa,sg-bbbbb.

v2.6.0 o 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 un listener TCP y UDP

Descripción

Versiones de CCM compatibles

Esta función requiere Kubernetes v1.24 o posterior. Para obtener más información sobre cómo actualizar un clúster, 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.
  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

Crear un 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

Crear un listener UDP

Nota

Si no especifica una comprobación de estado al crear un listener UDP, se habilita automáticamente una comprobación de estado TCP para el grupo de servidores. En los listeners UDP, se recomienda usar una anotación para especificar explícitamente una comprobación de estado UDP o para deshabilitar las comprobaciones de estado.

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

Crear un listener TCPSSL

Anotación: consulte la siguiente tabla para ver las anotaciones obligatorias.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el protocolo del listener. Para especificar varios protocolos, sepárelos con una coma (,), por ejemplo, TCP:80,TCPSSL:443.

v2.5.0 o posterior

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

Para obtener el ID, inicie sesión en la consola de Certificate Management Service, cree un certificado y busque el ID en la página SSL Certificate Management.

La siguiente imagen muestra un ejemplo:

image

Importante

Actualmente, los listeners TCP/SSL no son compatibles con grupos de servidores que tienen client IP address persistence habilitado. Esto significa que no puede configurar las anotaciones service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}" y service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" al mismo tiempo. Si necesita obtener direcciones IP de clientes mediante el 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.
    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 un rango de puertos de listener

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range

Descripción

Versiones de CCM compatibles

Esta función requiere el plugin de red Terway.

Puede configurar un listener para que escuche en un rango de puertos específico. La instancia de NLB reenvía entonces el tráfico de ese rango de puertos al mismo rango de puertos en los servidores backend. Por ejemplo, si configura el rango de puertos 80-100, el tráfico hacia los puertos 80 a 100 de la instancia de NLB se reenvía a los puertos 80 a 100 de los servidores backend.

El formato es port-range:service-port. Separe varios valores con una coma (,), por ejemplo, 80-100:80,400-500:443. Los puertos y los rangos de puertos del mismo protocolo no pueden superponerse.

El valor targetPort especifica el puerto de comprobación de estado para el grupo de servidores y debe ser un número entero del 1 al 65535.

v2.11.4 o 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

Habilitar la autenticación mutua

Anotación: consulte la siguiente tabla para ver las anotaciones obligatorias.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el protocolo del listener. Para especificar varios protocolos, sepárelos con una coma (,), por ejemplo, TCP:80,TCPSSL:443.

v2.5.0 o posterior

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

Para obtener el ID, inicie sesión en la consola de Certificate Management Service, cree un certificado y busque el ID en la página SSL Certificate Management.

La siguiente imagen muestra un ejemplo:

image

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

Para obtener el ID, inicie sesión en la consola de Certificate Management Service y busque el ID en los detalles del certificado dentro de la página PCA Certificate Management.

image

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

Especifica si se habilita la autenticación mutua. Valores válidos:

  • on: habilita la autenticación mutua.

  • off: deshabilita la autenticación mutua.

Valor predeterminado: 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

Establecer una política de seguridad TLS

Anotación: consulte la siguiente tabla para ver las anotaciones obligatorias.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el protocolo del listener. Para especificar varios protocolos, sepárelos con una coma (,), por ejemplo, TCP:80,TCPSSL:443.

v2.5.0 o posterior

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

Para obtener el ID, inicie sesión en la consola de Certificate Management Service, cree un certificado y busque el ID en la página SSL Certificate Management.

La siguiente imagen muestra un ejemplo:

image

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

El ID de la política de seguridad TLS. Puede usar políticas de seguridad definidas por el sistema o 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 predeterminado: 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

Habilitar Proxy Protocol

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Descripción

Versiones de CCM compatibles

Especifica si se usa Proxy Protocol para pasar las direcciones IP de los clientes a los servidores backend. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: off

Importante

Antes de habilitar Proxy Protocol, asegúrese de que sus servicios backend admitan Proxy Protocol v2. De lo contrario, las conexiones fallarán. Configure este parámetro con precaución.

v2.5.0 o 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

Pasar información adicional mediante Proxy Protocol

Anotación: consulte la siguiente tabla para ver las anotaciones obligatorias.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica si se usa Proxy Protocol para pasar las direcciones IP de los clientes a los servidores backend. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: off

Importante

Antes de habilitar Proxy Protocol, asegúrese de que sus servicios backend admitan Proxy Protocol v2. De lo contrario, las conexiones fallarán. Configure este parámetro con precaución.

v2.5.0 o posterior

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

Especifica si se usa Proxy Protocol para pasar el VpcId a los servidores backend. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: off

v2.9.1 o posterior

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

Especifica si se usa Proxy Protocol para pasar el PrivateLinkEpId a los servidores backend. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: off

v2.9.1 o posterior

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

Especifica si se usa Proxy Protocol para pasar el PrivateLinkEpsId a los servidores backend. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: off

v2.9.1 o 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

Establecer un límite de velocidad de conexión del listener

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

Descripción

Versiones de CCM compatibles

El número máximo de conexiones nuevas por segundo para una instancia de Network Load Balancer (NLB). El valor debe ser un número entero del 0 al 1,000,000. Un valor de 0 indica que no hay límite.

v2.5.0 o 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

Establecer un tiempo de espera de inactividad del listener

Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

Descripción

Versiones de CCM compatibles

El tiempo de espera de inactividad de la conexión en segundos. Valores válidos: de 10 a 900.

Valor predeterminado: 900

v2.5.0 o 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

Establecer una política ALPN

Anotación: consulte la siguiente tabla para ver las anotaciones obligatorias.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el protocolo del listener. Para especificar varios protocolos, sepárelos con una coma (,), por ejemplo, TCP:80,TCPSSL:443.

v2.5.0 o posterior

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

Para obtener el ID, inicie sesión en la consola de Certificate Management Service, cree un certificado y busque el ID en la página SSL Certificate Management.

La siguiente imagen muestra un ejemplo:

image

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

Especifica si se habilita Application-Layer Protocol Negotiation (ALPN). Valores válidos:

  • on: habilita ALPN.

  • off: deshabilita ALPN.

Valor predeterminado: off

v2.10.0 o posterior

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

La política ALPN. Valores válidos:

  • HTTP1Only: negocia únicamente el protocolo HTTP/1.x. Prioridad: HTTP/1.1 > HTTP/1.0.

  • HTTP2Only: negocia únicamente el protocolo HTTP/2.0.

  • HTTP2Optional: prioriza el protocolo HTTP/1.x, pero también acepta el protocolo HTTP/2.0. Prioridad: HTTP/1.1 > HTTP/1.0 > HTTP/2.0.

  • HTTP2Preferred: prioriza el protocolo HTTP/2, pero también acepta el protocolo HTTP/1.x. Prioridad: HTTP/2.0 > HTTP/1.1 > HTTP/1.0.

Para obtener más información, consulte el parámetro AlpnPolicy en la referencia de la 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 adicionales

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica el protocolo del listener. Para especificar varios protocolos, sepárelos con una coma (,); por ejemplo, TCP:80,TCPSSL:443.

v2.5.0 o posterior

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

Para obtener el ID, inicie sesión en la Certificate Management Service console, cree un certificado y busque el ID en la página SSL Certificate Management.

A continuación se muestra un ejemplo:

image

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

Los ID de los certificados adicionales. Separe varios ID de certificado con una coma (,). Para obtener los ID, inicie sesión en la Certificate Management Service console, cree los certificados y busque sus ID en la página SSL Certificate Management.

A continuación se muestra un ejemplo:

image

v2.13.0 o 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

Operaciones típicas para grupos de servidores

Algoritmo de programación

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

Descripción

Versiones de CCM compatibles

El algoritmo de programación. Valores válidos:

  • wrr: round robin ponderado. Los servidores de backend con mayor peso reciben más solicitudes.

  • rr: round robin. Las solicitudes se distribuyen secuencialmente entre los servidores de backend.

  • sch: hash de IP de origen. Las solicitudes provenientes de la misma dirección IP de origen siempre se enrutan al mismo servidor de backend.

  • tch: hash de cuatro tuplas. Las solicitudes se enrutan mediante un hash consistente de una tupla de cuatro elementos (dirección IP de origen, dirección IP de destino, puerto de origen y puerto de destino). Esto garantiza que el tráfico de un mismo flujo siempre se dirija al mismo servidor de backend.

  • wlc: menor cantidad de conexiones ponderadas. Las solicitudes se distribuyen según el peso y la carga actual (número de conexiones activas) de cada servidor de backend. Si los servidores tienen el mismo peso, aquel con menos conexiones activas tiene mayor probabilidad de recibir la siguiente solicitud.

Valor predeterminado: wrr

Para obtener más información sobre los valores de esta anotación, consulte el parámetro Scheduler en la referencia de la API CreateServerGroup.

v2.5.0 o 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

Drenaje de conexiones

anotación: Hay varias anotaciones disponibles, como se describe en la tabla a continuación.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica si se habilita el drenaje de conexiones. Si se habilita, ocurre lo siguiente cuando se elimina un servidor de backend o este falla las comprobaciones de estado:

  • on: mantiene activas las conexiones existentes durante el tiempo de espera especificado, lo que permite que se cierren de forma controlada.

  • off: el load balancer no finaliza las conexiones existentes. Estas se cierran solo cuando el cliente se desconecta o la sesión expira.

Valor predeterminado: off

v2.5.0 o posterior

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

El periodo de tiempo de espera para el drenaje de conexiones.

  • Unidad: segundos.

  • Valores válidos: de 0 a 900. El valor 0 finaliza las conexiones de inmediato.

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

Conservación de la IP del cliente

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip

Descripción

Versiones de CCM compatibles

Especifica si se habilita la conservación de la IP del cliente. Valores válidos:

  • on: habilita la función.

  • off: deshabilita la función.

Valor predeterminado: on

v2.5.0 o 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

Comprobaciones de estado TCP

anotación: Hay varias anotaciones disponibles, como se describe en la tabla a continuación. Para configurar las comprobaciones de estado TCP, todas las anotaciones siguientes son obligatorias. De forma predeterminada, las comprobaciones de estado están habilitadas para los puertos TCP.

Anotación

Descripción

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

Especifica si se habilitan las comprobaciones de estado. Valores válidos:

  • on: habilita las comprobaciones de estado.

  • off: deshabilita las comprobaciones de estado.

Valor predeterminado: on

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

El protocolo de la comprobación de estado. Valores válidos:

  • tcp

  • udp

  • http

Valor predeterminado: tcp

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

El puerto del servidor de backend que se usa para las comprobaciones de estado. Valores válidos: de 0 a 65535. El valor predeterminado 0 indica que se utiliza el puerto del servidor de backend.

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

El tiempo máximo de espera para recibir una respuesta de la comprobación de estado. Unidad: segundos. Valores válidos: de 1 a 300.

Valor predeterminado: 5

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

La cantidad de comprobaciones de estado exitosas consecutivas necesarias para considerar que un servidor de backend está en buen estado. Valores válidos: de 2 a 10.

Valor predeterminado: 2

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

La cantidad de comprobaciones de estado fallidas consecutivas necesarias para considerar que un servidor de backend está con errores. Valores válidos: de 2 a 10.

Valor predeterminado: 2

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

El intervalo entre comprobaciones de estado consecutivas. Unidad: segundos. Valores válidos: de 1 a 50.

Valor predeterminado: 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

Comprobaciones de estado UDP

anotación: Hay varias anotaciones disponibles y todas son obligatorias. Para usar comprobaciones de estado UDP, asegúrese de que todos los puertos definidos en el Service utilicen el protocolo UDP.

Anotación

Descripción

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

Especifica si se habilitan las comprobaciones de estado. Valores válidos:

  • on: habilita las comprobaciones de estado.

  • off: deshabilita las comprobaciones de estado.

Valor predeterminado: on

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

El protocolo de la comprobación de estado. Valores válidos:

  • tcp

  • udp

  • http

Valor predeterminado: tcp

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

El puerto del servidor que se usa para las comprobaciones de estado. Valores válidos: [0, 65535]. El valor predeterminado es 0, lo cual indica que se utiliza el puerto real del servidor de backend.

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

El tiempo de espera de respuesta para una sola comprobación de estado. Si se agota el tiempo, la comprobación actual se considera fallida. Unidad: segundos. Rango de valores: [1, 300]. Valor predeterminado: 5.

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

Un servidor de backend se considera en buen estado después de superar la cantidad especificada de comprobaciones de estado consecutivas. Valores válidos: [2, 10]. Valor predeterminado: 2.

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

Valor predeterminado: 2

El servidor de backend se considera con errores después de esta cantidad de fallos consecutivos en las comprobaciones de estado. Valores válidos: [2, 10]. Valor predeterminado: 2.

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

El intervalo entre comprobaciones de estado consecutivas. Unidad: segundos. Rango de valores: [1, 300]. Valor predeterminado: 5.

Este valor debe ser mayor que el valor de health-check-connect-timeout. De lo contrario, la comprobación de estado podría no funcionar correctamente.
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

Comprobaciones de estado HTTP

anotación: Hay varias anotaciones disponibles, como se describe en la tabla a continuación. Para configurar las comprobaciones de estado HTTP, todas las anotaciones siguientes son obligatorias. De forma predeterminada, las comprobaciones de estado usan el protocolo TCP.

Anotación

Descripción

Versiones de CCM compatibles

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

Especifica si se habilitan las comprobaciones de estado. Valores válidos:

  • on: habilita las comprobaciones de estado.

  • off: deshabilita las comprobaciones de estado.

Valor predeterminado: on

v2.5.0 o posterior

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

El protocolo de la comprobación de estado. Valores válidos:

  • tcp

  • udp

  • http

Valor predeterminado: tcp

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

La ruta para la comprobación de estado. Debe tener entre 1 y 80 caracteres, comenzar con una barra diagonal (/) y puede contener letras, dígitos y los siguientes caracteres especiales: - . _ % / ? # &. Para obtener más información, consulte CreateServerGroup.

Nota

Este parámetro es válido solo cuando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type se establece en http.

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

El nombre de dominio que se usa para las comprobaciones de estado. Valores válidos:

  • $SERVER_IP: la dirección IP privada del servidor de backend.

  • domain: un nombre de dominio específico. Debe tener entre 1 y 80 caracteres y contener solo letras minúsculas, dígitos, guiones (-) y puntos (.).

Nota

Este parámetro es válido solo cuando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type se establece en http.

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

El puerto del servidor de backend que se usa para las comprobaciones de estado. Valores válidos: de 0 a 65535. El valor predeterminado 0 indica que se utiliza el puerto del servidor de backend.

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

El tiempo máximo de espera para recibir una respuesta de la comprobación de estado. Unidad: segundos. Valores válidos: de 1 a 300.

Valor predeterminado: 5

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

La cantidad de comprobaciones de estado exitosas consecutivas necesarias para considerar que un servidor de backend está en buen estado. Valores válidos: de 2 a 10.

Valor predeterminado: 2

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

La cantidad de comprobaciones de estado fallidas consecutivas necesarias para considerar que un servidor de backend está con errores. Valores válidos: de 2 a 10.

Valor predeterminado: 2

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

El intervalo entre comprobaciones de estado consecutivas. Unidad: segundos. Valores válidos: de 1 a 50.

Valor predeterminado: 5

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

El método de la comprobación de estado. Valores válidos:

  • GET

  • HEAD

Nota

Este parámetro es válido solo cuando service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type se establece en 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

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type

Descripción

Versiones de CCM compatibles

El tipo de grupo de servidores. Valores válidos:

  • Ip: dirección IP. Puede agregar servidores de backend si especifica sus direcciones IP.

  • Instance (predeterminado): puede agregar instancias ECS o interfaces de red elásticas (ENI) como servidores de backend.

Valor predeterminado: Instance

Para obtener más información sobre los tipos de grupos de servidores de NLB, consulte Server groups.

v2.8.0 o 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 de backend IPv6

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-ip-version

Descripción

Versiones de CCM compatibles

La versión de IP de los servidores de backend en el grupo de servidores.

  • ipv4: el grupo de servidores contiene únicamente servidores de backend IPv4.

  • ipv6: el grupo de servidores contiene únicamente servidores de backend IPv6.

  • DualStack: el grupo de servidores contiene servidores de backend IPv4 e IPv6, y la afinidad de versión de IP se habilita automáticamente.

Valor predeterminado: ipv4

Nota

Cuando agrega servidores de backend IPv4 e IPv6 a un mismo grupo de servidores, el uso de la cuota de pods se duplica.

  • ipv6: v2.9.1 o posterior

  • DualStack: v2.14.0 o posterior

Reutilización de un grupo de servidores

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

Esta anotación le permite reutilizar un grupo de servidores existente. Solo surte efecto cuando reutiliza una instancia NLB existente. Para ver un ejemplo, consulte Deploy services across clusters by reusing a load balancer.

Peso del tráfico del servicio

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

En escenarios donde varios Services reutilizan la misma instancia NLB, puede usar esta anotación para establecer el peso del tráfico del Service actual. Esta anotación solo surte efecto cuando reutiliza un grupo de servidores existente. Para ver un ejemplo, consulte Deploy services across clusters by reusing a load balancer.

Ignorar las actualizaciones de peso

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update

Descripción

Versiones de CCM compatibles

Cuando se establece en on, el CCM no actualiza los pesos de los servidores de backend en el grupo durante la sincronización del Service. Esto resulta útil si gestiona los pesos de los servidores de backend mediante otros mecanismos.

  • on

  • off

Valor predeterminado: off

v2.11.1 o 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 predeterminado del servidor de backend

anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight

Descripción

Versiones de CCM compatibles

El peso predeterminado de los servidores de backend en el grupo de servidores. Un peso mayor significa que el servidor recibe una proporción más grande del tráfico entrante.

La cantidad aumenta.

Valores válidos: de 0 a 100. Si no se configura esta anotación, el sistema utiliza un peso predeterminado basado en el tipo de red.

Esta configuración no surte efecto cuando la instancia de backend es una instancia ECS y el valor de externalTrafficPolicy del Service se establece en Local.

v2.14.0 o 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