Asocie un CLB o NLB existente a un LoadBalancer Service para mantener una IP fija o compartirla entre varios servicios.
Desde fuera del clúster, use <SLB-IP>:<Service port> o el nombre de dominio del SLB. Desde dentro del clúster, use <Service name>:<Service port>.
Requisitos previos
Asegúrese de cumplir con lo siguiente:
Se creó un clúster administrado de ACK, un clúster dedicado de ACK o un clúster serverless de ACK. Consulte Create an ACK managed cluster, Create an ACK dedicated cluster (discontinued) y Create an ACK Serverless cluster.
Se creó una instancia CLB o NLB en la misma región que su clúster desde la consola de SLB. Consulte Use an existing CLB instance y Use an existing NLB instance.
Si planea reutilizar una instancia SLB existente, no seleccione Install Ingresses durante la creación del clúster. Especifique la instancia manualmente después. Consulte Use an existing CLB instance y Use an existing NLB instance.
Notas de uso
La gestión de listeners depende de la versión de cloud-controller-manager, por lo que algunas instancias SLB no se pueden reutilizar.
Comportamiento de los listeners según la versión de cloud-controller-manager
La configuración de los listeners varía según la versión de cloud-controller-manager:
v1.9.3.59-ge3bc999-aliyun y posteriores: cloud-controller-manager no configura los listeners de forma predeterminada. Agregue
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"para permitir que ACK gestione los listeners o configúrelos manualmente.Anteriores a v1.9.3.59-ge3bc999-aliyun: cloud-controller-manager crea y gestiona los grupos de servidores backend. Además, asocia todos los listeners (incluidos los configurados manualmente) a dichos grupos.
Comprobar la versión de cloud-controller-manager
Consola: En la consola de ACK, vaya a la página Operations > Add-ons de su clúster. En la pestaña Core Components, compruebe la versión de Cloud Controller Manager.
-
kubectl (solo para clústeres dedicados de ACK):
kubectl get pod -n kube-system -o yaml | grep image: | grep cloud-con | uniq
Límites de uso
No reutilice la instancia SLB del servidor API del clúster, ya que esto provoca errores de acceso.
Revise which SLB instances can be reused y quota limits antes de continuar.
Desplegar una aplicación
Despliegue una aplicación NGINX sin estado como backend del LoadBalancer Service.
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, elija 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, establezca 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-nginxSalida esperada:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 50s
Crear un LoadBalancer Service
Apunte el Service a su instancia SLB existente para enrutar el tráfico externo hacia los pods de NGINX.
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, elija Network > Services.
-
En la página Services, haga clic en Create. En el cuadro de diálogo Create Service, configure estos parámetros:
Parameter
Description
Example
Name
Nombre del Service
my-nginx-svcService Type
Seleccione SLB, establezca SLB Type en CLB y seleccione Use Existing Resource. Elija una instancia CLB. Para las instancias sin listeners, habilite Overwrite Existing Listeners.
SLB > CLB > Use Existing Resource
External Traffic Policy
Local enruta el tráfico solo a los pods del nodo actual. Cluster enruta el tráfico a los pods de todos los nodos.
LocalBackend
La aplicación que se asociará con el Service
Nombre:
app, valor:nginxPort Mapping
Asigna el puerto del Service al puerto del contenedor
Puerto del Service:
80, puerto del contenedor:80, protocolo:TCPAnnotations
Agregue anotaciones para configurar la instancia SLB. Consulte Use annotations to configure CLB instances y Use annotations to configure NLB instances.
N/A
-
Haga clic en OK. Haga clic en el nombre del Service para abrir los detalles y luego haga clic en la External IP (por ejemplo,
39.106.XX.XX:80) para comprobar el acceso.
Usar kubectl
-
Cree un archivo llamado
my-nginx-svc.yamlcon el siguiente contenido:Field
Description
metadata.annotationsalibaba-cloud-loadbalancer-id: el ID de la instancia SLB existente.alibaba-cloud-loadbalancer-force-override-listeners: 'true': permite que ACK gestione los listeners. Omítalo para conservar la configuración actual de los listeners.spec.selectorSelecciona los pods que recibirán el tráfico. Debe coincidir con
matchLabelsdel Deployment (app: nginx).spec.ports.portEl puerto expuesto en la IP del clúster. Acceda dentro del clúster mediante
clusterIP:port.spec.ports.targetPortEl puerto del pod de backend. kube-proxy reenvía el tráfico de
portatargetPort.apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${YOUR_LB_ID} # Replace with your SLB instance ID service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 'true' # Set to true for a new instance with no listeners configured labels: app: nginx name: my-nginx-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx # Must match the labels on the backend pods type: LoadBalancer -
Aplique el Service:
kubectl apply -f my-nginx-svc.yaml -
Confirme que el Service tenga una IP externa:
kubectl get svc my-nginx-svcSalida esperada:
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 stepSalida esperada:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... </html>
Gestionar Services
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, elija Network > Services.
En la página Services, haga clic en el nombre de un Service para ver sus detalles, o bien haga clic en Update o Delete en la columna Actions.
Usar kubectl
Actualizar un Service
kubectl edit service my-nginx-svc
También puede editar my-nginx-svc.yaml y volver a aplicarlo:
kubectl apply -f my-nginx-svc.yaml
Consultar un Service
kubectl get service my-nginx-svc
Salida esperada:
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 Service
kubectl delete service my-nginx-svc
Referencia de configuración de CLB
Configure estos parámetros cuando cree o reutilice una instancia CLB en la consola de ACK.
Crear una nueva instancia CLB
|
Parameter |
Description |
|
Name |
Nombre de la instancia CLB |
|
Access Method |
Public Access o Internal Access |
|
Billing Method |
Pay-by-specification o Pay-as-you-go (Pay-by-CU). Consulte Facturación de CLB. |
|
IP Version |
IPv4 o IPv6 |
|
Scheduling Algorithm |
Round Robin (RR) (predeterminado): distribuye las solicitudes en secuencia. Weighted Round Robin (WRR): los servidores con mayor peso reciben más solicitudes. |
|
Access Control |
Habilite o deshabilite el control de acceso a nivel de listener. Consulte Control de acceso. |
|
Health Check |
TCP o HTTP. Consulte Comprobaciones de estado de CLB. |
|
Others |
Configure mediante anotaciones. Consulte Use annotations to configure CLB instances. |
Usar una instancia CLB existente
Seleccione la instancia y, de manera opcional, habilite Overwrite Existing Listeners. Consulte Usar una instancia CLB existente y sobrescribir forzosamente sus listeners.
Revise los límites de uso antes de reutilizar un CLB. Consulte Usage notes en "Consideraciones para configurar un LoadBalancer Service".
Configuración avanzada
|
Parameter |
Description |
|
Scheduling Algorithm |
Round Robin (RR) (predeterminado) o Weighted Round Robin (WRR) |
|
Access Control |
Habilite o deshabilite el control de acceso del listener |
|
Health Check |
TCP o HTTP. Consulte Comprobaciones de estado de CLB. |
|
Others |
Configure mediante anotaciones. Consulte Use annotations to configure CLB instances. |
Referencia de configuración de NLB
Configure estos parámetros cuando cree o reutilice una instancia NLB en la consola de ACK.
Crear una nueva instancia NLB
|
Parameter |
Description |
|
Name |
Nombre de la instancia NLB |
|
Access Method |
Public Access o Internal Access |
|
Billing Method |
Pay-as-you-go (Pay-by-CU). Consulte Facturación de NLB. |
|
IP Version |
IPv4 o Dual-stack |
|
Scheduling Algorithm |
Round-Robin: distribuye en secuencia. Weighted Round-Robin (predeterminado): los servidores con mayor peso reciben más solicitudes. Source IP Hashing: la misma IP de origen se enruta al mismo servidor. Four-Element Hashing: enruta según la IP de origen, la IP de destino, el puerto de origen y el puerto de destino. QUIC ID Hashing: el mismo ID de QUIC se enruta al mismo servidor. Weighted Least Connections: enruta según el peso y el número de conexiones. |
|
Health Check |
TCP (predeterminado): sondeo SYN. Configure Health Check Response Timeout, Health Check Interval, Healthy Threshold y Unhealthy Threshold. HTTP: sondeo HEAD/GET. Configure Domain Name (Backend Server Internal IP o Custom Domain Name), Path y Health Check Status Codes (http_2xx, http_3xx, http_4xx, http_5xx; predeterminado: http_2xx). |
|
VPC |
La región de VPC y el ID de VPC del clúster |
|
Vswitch |
Seleccione un vSwitch en una zona compatible o cree uno nuevo |
|
Others |
Configure mediante anotaciones. Consulte Use annotations to configure NLB instances. |
Usar una instancia NLB existente
Seleccione la instancia y, de manera opcional, habilite Overwrite Existing Listeners. Consulte Use an existing NLB instance.
Revise los límites de uso antes de reutilizar un NLB. Consulte Usage notes en "Consideraciones para configurar un LoadBalancer Service".
Configuración avanzada
|
Parameter |
Description |
|
Scheduling Algorithm |
Las mismas opciones que en la tabla anterior para crear una instancia NLB |
|
Health Check |
Las mismas opciones que en la tabla anterior para crear una instancia NLB |
|
VPC |
La región de VPC y el ID de VPC del clúster |
|
Vswitch |
Seleccione un vSwitch en una zona compatible o cree uno nuevo |
|
Others |
Configure mediante anotaciones. Consulte Use annotations to configure NLB instances. |
Pasos siguientes
Para permitir que ACK cree y gestione automáticamente una instancia SLB en lugar de reutilizar una, consulte Usar una instancia SLB creada automáticamente para exponer una aplicación.
Si las anotaciones no surten efecto o el Service no se puede asociar a una instancia SLB, consulte Service FAQ y Solución de problemas de Services.