Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Expose an application with an auto-created load balancer

Última actualización: Sep 19, 2026

Si no cuenta con un load balancer disponible, el componente cloud-controller-manager (CCM) crea y gestiona automáticamente una instancia de load balancer para un servicio de tipo type: LoadBalancer. Esta instancia puede ser un Classic Load Balancer (CLB) o un Network Load Balancer (NLB). En este tema se describe cómo exponer una aplicación Nginx mediante un servicio que crea un load balancer de forma automática.

Notas de uso

Consideraciones para las instancias SLB gestionadas por CCM

  • CCM configura el balanceo de carga únicamente para los servicios Type=LoadBalancer.

  • Importante

    Si un servicio Type=LoadBalancer cambia a otro tipo, CCM elimina las configuraciones de SLB. El servicio deja de ser accesible a través de la instancia SLB.

  • CCM utiliza una API declarativa y puede actualizar la configuración de SLB según los cambios del servicio. Las modificaciones manuales en la consola de SLB podrían sobrescribirse.

  • Importante

    No modifique las configuraciones de las instancias SLB gestionadas por ACK desde la consola de SLB. Sus cambios podrían perderse y el servicio podría volverse inaccesible.

  • No elimine ni modifique los finalizer service.k8s.alibaba/resources o service.k8s.alibaba/nlb. Esto podría impedir que los recursos CLB o NLB se liberen correctamente.

  • Para Cloud Controller Manager v2.5.0 o versiones posteriores, especificar una instancia CLB al crear un servicio requiere estar en la lista de permitidos. Envíe una solicitud en el Centro de cuotas.

Server Load Balancer

Desplegar una aplicación

Despliegue una aplicación NGINX sin estado como backend del servicio LoadBalancer.

Usar la consola de ACK

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel izquierdo, seleccione Workloads > Deployments.

  3. En la página Deployments, haga clic en Create from Image y configure el Deployment:

    1. En la página Basic Information, establezca Name como my-nginx y haga clic en Next.

    2. En la página Container, configure la imagen y el puerto:

      Parameter

      Value

      Image Name

      Haga clic en Select images. En la pestaña Artifact Center, busque nginx y seleccione openanolis/nginx. Haga clic en Select Image Tag, defina una etiqueta y haga clic en OK.

      Port

      Nombre: nginx, puerto del contenedor: 80

    3. En la página Advanced, conserve los valores predeterminados y haga clic en Create.

Usar kubectl

  1. Cree un archivo llamado my-nginx.yaml con el siguiente contenido:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-nginx        # Deployment name
      labels:
        app: nginx
    spec:
      replicas: 2           # Number of pod replicas
      selector:
        matchLabels:
          app: nginx        # Must match the selector in the Service
      template:
        metadata:
          labels:
            app: nginx
        spec:
        #  nodeSelector:
        #    env: test-team
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
  2. Despliegue la aplicación:

    kubectl apply -f my-nginx.yaml
  3. Compruebe que el Deployment esté listo:

    kubectl get deployment my-nginx

    Resultado esperado:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    my-nginx   2/2     2            2           50s

Paso 2: Exponer la aplicación con un load balancer creado automáticamente

Puede crear un servicio de tipo type: LoadBalancer y exponer su aplicación mediante la consola de ACK o kubectl.

A partir del 11 de septiembre de 2025, crear un servicio de tipo Classic Load Balancer (CLB) desde la consola requiere acceso a la lista de permitidos. Antes de crear un servicio de tipo CLB en la consola, envíe una solicitud de cuota de privilegios para "Console-based creation of a CLB-type Service" en el Centro de cuotas (ID de cuota: ack.white_list / ack.create_clb_service). Solo podrá crear un servicio de tipo CLB en la consola después de que se apruebe la solicitud. Para obtener más información, consulte el anuncio de cambios del producto.

Consola

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Network > Services.

  3. En la página Services, haga clic en Create. En el cuadro de diálogo Create Service, configure los parámetros del servicio.

    Parámetro

    Descripción

    Ejemplo

    Name

    Introduzca un nombre para el servicio.

    my-nginx-svc

    service type

    Seleccione un service type. Un servicio admite los siguientes modos de red para gestionar el acceso de distintos tipos y orígenes de clientes:

    Cluster IP

    Este tipo habilita la comunicación dentro de un clúster. El descubrimiento de servicios entre instancias solo se admite cuando el tipo de servicio se establece en ClusterIP. Mediante un Headless Service, puede interactuar con otros mecanismos de descubrimiento de servicios sin depender del descubrimiento y balanceo de carga predeterminados basados en ClusterIP que proporciona Kubernetes.

    LoadBalancer

    Al integrarse con Alibaba Cloud Classic Load Balancer (CLB) y Network Load Balancer (NLB), puede exponer las aplicaciones del clúster al tráfico externo. Este método mejora significativamente la disponibilidad y el rendimiento de la aplicación en comparación con el método NodePort.

    Node Port

    Proporciona una forma práctica para que los usuarios externos accedan a los servicios del clúster mediante la dirección IP y un puerto específico de un nodo. Los usuarios pueden conectarse a un servicio NodePort al acceder a <NodeIP>:<NodePort>, pero debe configurar manualmente el balanceo de carga.

    1. Seleccione Server Load Balancer como tipo de servicio.

    2. Seleccione CLB como tipo de load balancer y elija Create Resource.

    3. En la sección desplegable Create CLB Instance, ajuste la configuración según sea necesario. Establezca Billing Method en Pay-by-specification.

    External Traffic Policy

    Establezca el tipo de servicio Node Port o Server Load Balancer antes de configurar External Traffic Policy. Para obtener más información, consulte Manage services.

    • Local: el tráfico se dirige únicamente a los pods del mismo nodo.

    • Cluster: el tráfico se puede reenviar a pods de otros nodos del clúster.

    Local

    Backend

    Seleccione la aplicación de backend que desea vincular al servicio. Si no asocia un deployment, el sistema no crea objetos Endpoints. Para obtener más información, consulte services-without-selectors.

    • Nombre: app

    • Valor: nginx

    Port Mapping

    Agregue un puerto de servicio (corresponde al campo port en el archivo YAML del servicio) y un puerto de contenedor (corresponde al campo targetPort en el archivo YAML del servicio). El puerto del contenedor debe coincidir con el puerto expuesto por el pod de backend.

    • Puerto del servicio: 80

    • Puerto del contenedor: 80

    • Protocolo: TCP

    annotations

    Agregue una anotación al servicio para configurar los parámetros del load balancer. Para conocer más parámetros, consulte Configure CLB using annotations y Configure NLB using annotations.

    Importante

    No reutilice la instancia de load balancer del API Server del clúster. De lo contrario, el acceso al clúster podría interrumpirse.

    En este ejemplo, el tráfico de red pública del servicio se factura por ancho de banda, con un pico de 2 Mbit/s para controlar el tráfico. Las anotaciones son las siguientes:

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: paybybandwidth

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: 2

    labels

    Agregue una etiqueta para identificar el servicio.

    Ninguna

    Service Deletion Protection

    Habilite la protección contra eliminación para los servicios que respaldan operaciones críticas o manejan datos confidenciales. Esto evita eliminaciones accidentales y reduce los costos de mantenimiento. Después de habilitar la protección contra eliminación, debe deshabilitarla manualmente antes de eliminar el recurso.

    Nota

    Para usar esta función, instale los componentes policy-template-controller y gatekeeper desde el complemento Container Security Policy. Haga clic en Install Now para desplegar los componentes.

    Deshabilitado

    Una vez configurados los parámetros, haga clic en OK.

  4. Cuando se cree el servicio, haga clic en su nombre para ir a la página de detalles. En la sección Basic Information, haga clic en la External IP del servicio, por ejemplo 39.106.XX.XX:80, para acceder a la aplicación de ejemplo.

    image

Kubectl

  1. Cree un archivo llamado my-nginx-svc.yaml con el siguiente contenido para el servicio de ejemplo.

    Establezca selector con el valor de matchLabels del archivo de la aplicación de ejemplo my-nginx.yaml, que en este caso es app: nginx. Esto asocia el servicio con la aplicación de backend.

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
  2. Aplique el servicio:

    kubectl apply -f my-nginx-svc.yaml
  3. Confirme que el servicio tenga una IP externa:

    kubectl get svc my-nginx-svc

    Resultado esperado:

    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
    my-nginx-svc   LoadBalancer   172.21.5.82   39.106.XX.XX     80:30471/TCP   5m
  4. Acceda a la aplicación:

    curl <YOUR-EXTERNAL-IP>    # Replace with the external IP from the previous step

    Resultado esperado:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    ...
    </html>

Classic Load Balancer (CLB)

Create CLB Instance

Cuando cree un Classic Load Balancer (CLB), siga las instrucciones para crear una instancia de CLB. Para obtener más información, consulte Create and manage CLB instances.

Nombre

Descripción

Name

Introduzca un nombre personalizado para el CLB.

Access Method

Seleccione Public Access o Internal Access.

Billing Method

Seleccione Pay-by-specification o Pay-as-you-go (Pay-by-CU). Para obtener más información, consulte CLB billing overview.

IP Version

Seleccione IPv4 o IPv6.

Importante

Para usar IPv6, asegúrese de que la región del clúster de ACK sea compatible con instancias de CLB IPv6. Para consultar las regiones compatibles con CLB IPv6, vea CLB supported regions.

Scheduling Algorithm

Los algoritmos admitidos son round robin (RR) y weighted round robin (WRR). RR (predeterminado): distribuye las solicitudes externas a los servidores de backend en secuencia. WRR: los servidores de backend con mayor peso reciben más solicitudes.

Access Control

Proporciona control de acceso a nivel de listener. Para obtener más información, consulte Access control.

Health Check

Admite los protocolos TCP y HTTP. Después de habilitar las comprobaciones de estado, utilícelas para determinar la disponibilidad de los servidores de backend. Para obtener más información, consulte CLB health check.

Others

Configure el CLB mediante anotaciones. Para obtener más información, consulte Configure CLB using annotations.

Use Existing Resource

Seleccione una instancia existente de Classic Load Balancer (CLB) en la lista desplegable. También puede seleccionar la opción para sobrescribir forzosamente los listeners existentes. Para obtener más información, consulte Use existing load balancer and force overwrite existing listeners.

Importante

La reutilización de instancias de CLB está sujeta a ciertas limitaciones y consideraciones. Para obtener más información, consulte Which Server Load Balancers can be reused?.

Configure Resources

Nombre

Descripción

Scheduling Algorithm

Admite dos políticas: round-robin (RR) y weighted round-robin (WRR). RR es la predeterminada. Con RR, Server Load Balancer distribuye las solicitudes externas a los servidores de backend en secuencia. Con WRR, los servidores de backend con mayor peso reciben más solicitudes.

Access Control

Proporciona control de acceso a nivel de listener. Para obtener más información, consulte Access control.

Health Check

Admite los protocolos TCP y HTTP. Una vez que habilite las comprobaciones de estado, Server Load Balancer las utilizará para evaluar la disponibilidad de sus servidores de backend. Para conocer cómo funcionan las comprobaciones de estado, consulte How Server Load Balancer health checks work.

Others

También puede configurar un Classic Load Balancer mediante anotaciones. Para obtener más información, consulte Configure a Classic Load Balancer using annotations.

Network Load Balancer (NLB)

Create NLB Instance

Puede crear un recurso de Network Load Balancer (NLB). Para obtener más información, consulte Create and manage NLB instances.

Nombre

Descripción

Name

Introduzca un nombre personalizado para la instancia de NLB. Este parámetro es obligatorio solo cuando se crea una nueva instancia de NLB.

Access Method

Seleccione Public Access o Internal Access según sus necesidades.

Billing Method

Pay-as-you-go. Para obtener más información, consulte NLB billing.

IP Version

Seleccione IPv4 o DualStack según sus necesidades.

Scheduling Algorithm

Seleccione un algoritmo de programación.

  • Round Robin: distribuye las solicitudes a los servidores de backend en secuencia.

  • Weighted Round-robin (predeterminado): distribuye las solicitudes a los servidores de backend según su peso. Los servidores de backend con mayor peso reciben más solicitudes.

  • Source IP Hashing: utiliza hash consistente basado en direcciones IP de origen. Las solicitudes provenientes de la misma dirección IP de origen se enrutan al mismo servidor de backend.

  • Four-element Hashing: utiliza hash consistente basado en tuplas de cuatro elementos (IP de origen, IP de destino, puerto de origen y puerto de destino). Los paquetes del mismo flujo se enrutan al mismo servidor de backend.

  • QUIC ID Hashing: utiliza hash consistente basado en identificadores de conexión QUIC. Las solicitudes con el mismo identificador QUIC se enrutan al mismo servidor de backend.

    Solo puede seleccionar el hash de identificador QUIC cuando el protocolo de backend es UDP.
    El protocolo QUIC evoluciona rápidamente. Este algoritmo se implementó con base en draft-ietf-quic-transport-10. No se garantiza la compatibilidad con todas las versiones de QUIC. Se recomienda ejecutar pruebas exhaustivas antes de usar este algoritmo en un entorno de producción.
  • Weighted Least Connections: este algoritmo considera la carga real (número de conexiones) de los servidores de backend, además del peso de cada servidor. Si los servidores de backend tienen el mismo peso, el servidor con menos conexiones activas se consulta con mayor frecuencia.

Health Check

Habilite o deshabilite las comprobaciones de estado.

  • TCP (predeterminado): envía mensajes de enlace SYN para comprobar si el puerto del servidor está activo.

    • Response Timeout Period: introduzca el tiempo de espera para recibir una respuesta de la comprobación de estado. Si un servidor de backend no responde correctamente dentro del periodo especificado, la comprobación de estado falla.

    • Health Check Interval: introduzca el intervalo entre comprobaciones de estado.

    • Healthy Threshold: número de comprobaciones de estado exitosas consecutivas necesarias para cambiar el estado de un servidor de backend de con errores a exitoso.

    • Unhealthy Threshold: número de comprobaciones de estado fallidas consecutivas necesarias para cambiar el estado de un servidor de backend de exitoso a con errores.

  • Http : envía solicitudes HEAD o GET para simular el acceso de un navegador y comprobar el estado de la aplicación del servidor.

    • Domain Name: introduzca el nombre de dominio para la comprobación de estado.

      • Backend Server Internal IP (predeterminado): utiliza la dirección IP privada del servidor de backend como nombre de dominio para la comprobación de estado.

      • Custom Domain Name: introduzca un nombre de dominio.

    • Health Check Path: introduzca la URL de la página de comprobación de estado.

    • Health Check Status Codes: seleccione http_2xx (predeterminado), http_3xx, http_4xx o http_5xx.

Others

También puede configurar la instancia de NLB mediante anotaciones. Para obtener más información, consulte Configure an NLB instance using annotations.

VPC

La región y el identificador de la VPC predeterminada del clúster.

vSwitch

Seleccione un switch virtual para una zona compatible en la VPC predeterminada del clúster. También puede hacer clic en Create vSwitch para crear uno nuevo.

Use Existing Resource

Seleccione una instancia de NLB existente en la lista desplegable. También puede seleccionar la opción para sobrescribir forzosamente el listener existente. Para obtener más información, consulte Use an existing Server Load Balancer instance.

Importante

La reutilización de una instancia de NLB está sujeta a ciertas limitaciones. Para obtener más información, consulte Which Server Load Balancer instances can be reused?

Configure Resources

Nombre

Descripción

Scheduling Algorithm

Seleccione un algoritmo de programación.

  • Round Robin: distribuye las solicitudes a los servidores de backend en secuencia.

  • Weighted Round-robin (predeterminado): distribuye las solicitudes a los servidores de backend según su peso. Los servidores de backend con mayor peso reciben más solicitudes.

  • Source IP Hashing: utiliza hash consistente basado en direcciones IP de origen. Las solicitudes provenientes de la misma dirección IP de origen se enrutan al mismo servidor de backend.

  • Four-element Hashing: utiliza hash consistente basado en tuplas de cuatro elementos (IP de origen, IP de destino, puerto de origen y puerto de destino). Los paquetes del mismo flujo se enrutan al mismo servidor de backend.

  • QUIC ID Hashing: utiliza hash consistente basado en identificadores de conexión QUIC. Las solicitudes con el mismo identificador QUIC se enrutan al mismo servidor de backend.

    Solo puede seleccionar el hash de identificador QUIC cuando el protocolo de backend es UDP.
    El protocolo QUIC evoluciona rápidamente. Este algoritmo se implementó con base en draft-ietf-quic-transport-10. No se garantiza la compatibilidad con todas las versiones de QUIC. Se recomienda ejecutar pruebas exhaustivas antes de usar este algoritmo en un entorno de producción.
  • Weighted Least Connections: este algoritmo considera la carga real (número de conexiones) de los servidores de backend, además del peso de cada servidor. Si los servidores de backend tienen el mismo peso, el servidor con menos conexiones activas se consulta con mayor frecuencia.

Health Check

Habilite o deshabilite las comprobaciones de estado.

  • TCP (predeterminado): envía mensajes de enlace SYN para comprobar si el puerto del servidor está activo.

    • Response Timeout Period: introduzca el tiempo de espera para recibir una respuesta de la comprobación de estado. Si un servidor de backend no responde correctamente dentro del periodo especificado, la comprobación de estado falla.

    • Health Check Interval: introduzca el intervalo entre comprobaciones de estado.

    • Healthy Threshold: número de comprobaciones de estado exitosas consecutivas necesarias para cambiar el estado de un servidor de backend de con errores a exitoso.

    • Unhealthy Threshold: número de comprobaciones de estado fallidas consecutivas necesarias para cambiar el estado de un servidor de backend de exitoso a con errores.

  • Http : envía solicitudes HEAD o GET para simular el acceso de un navegador y comprobar el estado de la aplicación del servidor.

    • Domain Name: introduzca el nombre de dominio para la comprobación de estado.

      • Backend Server Internal IP (predeterminado): utiliza la dirección IP privada del servidor de backend como nombre de dominio para la comprobación de estado.

      • Custom Domain Name: introduzca un nombre de dominio.

    • Health Check Path: introduzca la URL de la página de comprobación de estado.

    • Health Check Status Codes: seleccione http_2xx (predeterminado), http_3xx, http_4xx o http_5xx.

Others

También puede configurar la instancia de NLB mediante anotaciones. Para obtener más información, consulte Configure an NLB instance using annotations.

VPC

La región y el identificador de la VPC predeterminada del clúster.

vSwitch

Seleccione un switch virtual para una zona compatible en la VPC predeterminada del clúster. También puede hacer clic en Create vSwitch para crear uno nuevo.

Siguientes pasos

Si necesita consultar, actualizar o eliminar un servicio, o bien habilitar la protección contra eliminación del servicio, ejecute las siguientes operaciones. Por ejemplo, puede modificar el load balancer público asociado al servicio.

Importante

Cuando elimina un Service o cambia su tipo de LoadBalancer a otro tipo, la instancia de load balancer creada automáticamente se libera de forma automática.

Console

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Network > Services.

  3. En la página Services, busque el servicio de destino y luego haga clic en Update en la columna Actions, o bien haga clic en el ícono image para actualizar, Delete o Enable Deletion Protection para el servicio.

Kubectl

Actualizar un servicio

  • Método 1: ejecute el siguiente comando para actualizar el servicio.

    kubectl edit service my-nginx-svc
  • Método 2: modifique el archivo YAML y aplique los cambios.

    kubectl apply -f my-nginx-svc.yaml

Consultar un servicio

Ejecute el siguiente comando para consultar el servicio.

kubectl get service my-nginx-svc

Resultado esperado:

NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
my-nginx-svc   LoadBalancer   172.21.XX.XX   192.168.XX.XX     80:31599/TCP   5m

Eliminar un servicio

Ejecute el siguiente comando para eliminar el servicio.

kubectl delete service my-nginx-svc