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.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.
No elimine ni modifique los finalizer
service.k8s.alibaba/resourcesoservice.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.
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.
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.
Server Load Balancer
CCM crea una instancia SLB por cada servicio
Type=LoadBalancer. La cuota predeterminada es de 60 instancias CLB y 60 instancias NLB. Para aumentar esta cuota, inicie sesión en la consola del Centro de cuotas y envíe una solicitud.-
CCM adjunta instancias ECS o Elastic Network Interfaces (ENI) al grupo de servidores de backend de SLB según la configuración del servicio. Además, crea un grupo de servidores independiente por cada targetPort. Límites de cuota:
Número de servidores de backend: una instancia CLB admite hasta 200 servidores de backend; una instancia NLB admite hasta 400 servidores basados en ECS, ENI o IP. Fórmula de la cuota: servidores de backend × targetPorts. Para aumentar la cuota, inicie sesión en la consola del Centro de cuotas y envíe una solicitud con anticipación.
Asignaciones de grupos de servidores por instancia: una instancia ECS o ENI se puede adjuntar a un máximo de 50 grupos de servidores de backend de CLB y 200 grupos de servidores de backend de NLB. Para aumentar este límite, inicie sesión en la consola del Centro de cuotas y envíe una solicitud.
Cuota adicional durante las actualizaciones continuas: los nuevos pods se crean antes de destruir los anteriores. Este proceso consume cuota adicional que podría superar lo esperado. Reserve suficiente cuota con anticipación.
CCM crea listeners a partir de los puertos del servicio. El límite predeterminado es de 50 listeners por instancia CLB o NLB. Para agregar más, inicie sesión en la consola del Centro de cuotas y envíe una solicitud.
-
Consulte CLB limits y NLB limits.
Consulte las cuotas de SLB en la sección Gestión de cuotas de Server Load Balancer.
Desplegar una aplicación
Despliegue una aplicación NGINX sin estado como backend del servicio LoadBalancer.
Usar la consola de ACK
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel izquierdo, seleccione Workloads > Deployments.
-
En la página Deployments, haga clic en Create from Image y configure el Deployment:
En la página Basic Information, establezca Name como
my-nginxy haga clic en Next.-
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
nginxy seleccione openanolis/nginx. Haga clic en Select Image Tag, defina una etiqueta y haga clic en OK.Port
Nombre:
nginx, puerto del contenedor:80 En la página Advanced, conserve los valores predeterminados y haga clic en Create.
Usar kubectl
-
Cree un archivo llamado
my-nginx.yamlcon 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 -
Despliegue la aplicación:
kubectl apply -f my-nginx.yaml -
Compruebe que el Deployment esté listo:
kubectl get deployment my-nginxResultado 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
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
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:
Seleccione Server Load Balancer como tipo de servicio.
Seleccione CLB como tipo de load balancer y elija Create Resource.
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
porten el archivo YAML del servicio) y un puerto de contenedor (corresponde al campotargetPorten 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.
ImportanteNo 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: paybybandwidthservice.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.
NotaPara 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.
-
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.
Kubectl
-
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 -
Aplique el servicio:
kubectl apply -f my-nginx-svc.yaml -
Confirme que el servicio tenga una IP externa:
kubectl get svc my-nginx-svcResultado 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 -
Acceda a la aplicación:
curl <YOUR-EXTERNAL-IP> # Replace with the external IP from the previous stepResultado 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.
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.
|
Health Check | Habilite o deshabilite las comprobaciones de estado.
|
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.
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.
|
Health Check | Habilite o deshabilite las comprobaciones de estado.
|
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.
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
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
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
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