Para habilitar funciones avanzadas de balanceo de carga, configure instancias de CLB, listeners y grupos de servidores backend. Para ello, agregue anotaciones a su archivo YAML del Service.
Índice
|
Categoría |
Categoría de función |
Enlace de configuración |
|
Crear un load balancer |
||
|
Especificar una instancia existente |
||
|
Configurar el load balancer |
||
|
Habilitar la protección de instancias |
||
|
Configuración de persistencia de sesiones |
||
|
Configuración de puertos y protocolos |
||
|
Configuración avanzada |
|
|
|
Gestión de configuraciones |
|
|
Notas sobre el uso de anotaciones
Los valores de las anotaciones distinguen entre mayúsculas y minúsculas.
Antes de usar anotaciones, compruebe en este documento la versión del componente CCM compatible con cada función. Para actualizar el componente CCM, consulte Components. Para revisar el historial de cambios del componente CCM, consulte Cloud Controller Manager.
-
A partir del 11 de septiembre de 2019, el prefijo del campo
annotationscambió dealicloudaalibaba-cloud.Ejemplo:
Antes de la actualización:
service.beta.kubernetes.io/alicloud-loadbalancer-idDespués de la actualización:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idEl sistema sigue siendo compatible con el prefijo
alicloud. No es necesario aplicar ningún cambio.
Operaciones típicas de CLB
Crear una instancia de SLB orientada a Internet
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear una instancia de SLB orientada a la red interna
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
|
Descripción |
Versión de CCM compatible |
|
Especifica la instancia de SLB como orientada a la red interna. Valores válidos:
Valor predeterminado: Consulte Specify vSwitch for SLB instance para especificar manualmente un vSwitch para el CLB. Si no lo especifica, el sistema selecciona uno automáticamente según la versión de CCM:
|
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Especificar las especificaciones de la instancia de SLB
Anotación: varias, como se muestra en la tabla a continuación.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type |
Método de facturación de la instancia. Valores válidos:
Valor predeterminado: Importante
|
v2.4.0 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec |
Especificación de la instancia de SLB. Use este parámetro para crear una instancia de SLB con una especificación concreta o para actualizar la especificación de una instancia existente. Valores válidos:
Valor predeterminado: Para consultar más valores válidos, vea CreateLoadBalancer. Importante
Si modifica la especificación del SLB en la consola de CLB (solo se admite en instancias de SLB facturadas por especificación), es posible que CCM la revierta a la especificación original. Proceda con precaución. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Usar una instancia de SLB existente
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
|
Descripción |
Versión de CCM compatible |
|
Importante
ID de la instancia de SLB. Use esta anotación para especificar un CLB existente.
|
v1.9.3.81-gca19cd4-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Usar una instancia de SLB existente y forzar la sobrescritura de los listeners actuales
Anotación: varias, como se muestra en la tabla a continuación. Forzar la sobrescritura elimina los listeners que entren en conflicto.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id |
Importante
Para evitar comportamientos inesperados, como la indisponibilidad del clúster o la interrupción del tráfico, no reutilice las instancias de CLB del API Server ni las instancias de CLB creadas por CCM. Cree una nueva instancia manualmente en la consola de Classic Load Balancer (CLB). ID de la instancia de SLB. Use esta anotación para especificar un CLB existente.
|
v1.9.3.81-gca19cd4-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners |
Al vincular un SLB existente, determina si se sincronizan las configuraciones de los listeners del CLB con base en el Service.
Valor predeterminado: Importante
Cuando reutilice un CLB existente y establezca |
v1.9.3.81-gca19cd4-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Especificar zonas principal y secundaria al crear una instancia de SLB
Anotación: varias, como se muestra en la tabla a continuación. Las zonas principal y secundaria no se pueden modificar después de la creación.
Las instancias de SLB de algunas regiones no admiten zonas principal y secundaria. Consulte la página de creación de CLB para obtener más detalles.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid |
ID de zona del servidor backend principal. |
v1.9.3.10-gfb99107-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid |
ID de zona del servidor backend de respaldo. |
v1.9.3.10-gfb99107-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear una instancia de SLB facturada por ancho de banda
Anotación: varias, como se muestra en la tabla a continuación. Ambas anotaciones son obligatorias.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type |
Método de facturación de la instancia de SLB. Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth |
Ancho de banda de la instancia de SLB, que representa el ancho de banda máximo. Valor predeterminado: 50. Solo aplica a instancias de SLB orientadas a Internet. Para conocer otros límites, consulte Modify billing method for Internet-facing SLB instance. |
v1.9.3.10-gfb99107-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Especificar el vSwitch para la instancia de SLB
Anotación: varias, como se muestra en la tabla a continuación. Ambas anotaciones son obligatorias.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
Especifica la instancia de SLB como orientada a la red interna. Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
ID del vSwitch de la instancia de SLB. El vSwitch debe pertenecer a la misma VPC que el clúster de Kubernetes. Al establecer este parámetro, configure también Inicie sesión en la consola de Virtual Private Cloud para consultar el ID del vSwitch. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Especificar la dirección IP para un SLB orientado a la red interna
Anotación: varias, como se muestra en la tabla a continuación. Las tres anotaciones son obligatorias.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
Especifica la instancia de SLB como orientada a la red interna. Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
ID del vSwitch de la instancia de SLB. El vSwitch debe pertenecer a la misma VPC que el clúster de Kubernetes. Al establecer este parámetro, configure también Inicie sesión en la consola de Virtual Private Cloud para consultar el ID del vSwitch. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip |
Dirección IP de la instancia de SLB orientada a la red interna.
|
v2.7.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
name: nginx
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: http
selector:
app: nginx
Agregar etiquetas adicionales a la instancia de SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
|
Descripción |
Versión de CCM compatible |
|
Lista de etiquetas que se van a agregar. Separe varias etiquetas con comas inglesas (,). Ejemplo: Importante
Después de agregar esta anotación para especificar etiquetas adicionales, cualquier modificación manual de etiquetas que aplique a la instancia de SLB correspondiente en la consola podría sobrescribirse. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear una instancia SLB IPv6
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
|
Descripción |
Versión de CCM compatible |
|
Versión IP de la instancia SLB. El tipo de IP no se puede modificar después de crearla. Cuando utilice esta función, asegúrese de que el modo proxy de kube-proxy del clúster sea IPVS. Valores válidos:
Valor predeterminado: |
v1.9.3.220-g24b1885-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Habilitar la protección contra eliminación para la instancia SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
|
Descripción |
Versión de CCM compatible |
|
Protección contra eliminación de la instancia SLB. Valores válidos:
Valor predeterminado: Importante
En las instancias SLB creadas por Services de tipo LoadBalancer, aunque habilite manualmente la protección contra eliminación en la consola CLB, aún podrá eliminar la instancia SLB asociada si ejecuta |
v1.9.3.313-g748f81e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Habilitar el modo de solo lectura de configuración para la instancia SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
|
Descripción |
Versión de CCM compatible |
|
Protección contra modificaciones de configuración de la instancia SLB. Valores válidos:
Valor predeterminado: |
v1.9.3.313-g748f81e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Especificar el nombre de la instancia SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
|
Descripción |
Versión de CCM compatible |
|
Nombre de la instancia SLB. 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 (-). |
v1.9.3.313-g748f81e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Especificar el resource group para la instancia SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
|
Descripción |
Versión de CCM compatible |
|
ID del resource group de la instancia SLB. Una vez especificado, este ID no se puede modificar. Consulte el ID del resource group en la consola de Resource Management de Alibaba Cloud. |
v1.9.3.313-g748f81e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Establecer el nombre de host para el Service
Anotación: Varias, como se muestra a continuación en la tabla.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname |
Establezca un nombre de host para el Service. Este debe cumplir con las reglas de nomenclatura DNS. Tenga en cuenta lo siguiente:
|
v2.3.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
name: nginx-svc
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Salida esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc loadBalancer 47.100.XX.XX www.example.com 80:30248/TCP,443:32670/TCP 10s
Crear una instancia SLB con facturación por uso
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
|
Descripción |
Versión de CCM compatible |
|
Método de facturación de la instancia. Valores válidos:
Valor predeterminado: Importante
|
v2.4.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Operaciones típicas de listener
Configurar el tiempo de espera de persistencia de sesión para SLB TCP
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
|
Descripción |
Versión de CCM compatible |
|
Tiempo de espera de persistencia de sesión. Se aplica únicamente a los listeners TCP. Si la instancia SLB tiene varios listeners TCP, esta configuración se aplica de forma predeterminada a todos ellos. Unidad: segundos. Rango válido: [0, 3600]. Valor predeterminado: 0 (persistencia de sesión deshabilitada). Para más información, consulte CreateLoadBalancerTCPListener. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Configurar la persistencia de sesión (inserción de cookie) para listeners HTTP y HTTPS
Anotación: Varias, como se muestra a continuación en la tabla. Las cuatro anotaciones son obligatorias cuando se insertan cookies.
Se aplica únicamente a instancias SLB HTTP y HTTPS.
Si hay varios listeners HTTP o HTTPS configurados, la persistencia de sesión se aplica de forma predeterminada a todos ellos.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session |
Habilite la persistencia de sesión. Se aplica únicamente a listeners HTTP y HTTPS. Valores válidos:
Valor predeterminado: Para más información, consulte CreateLoadBalancerHTTPListener y CreateLoadBalancerHTTPSListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type |
Método de manejo de cookies. Se aplica únicamente a listeners HTTP y HTTPS. Es obligatorio cuando
Para más información, consulte CreateLoadBalancerHTTPListener y CreateLoadBalancerHTTPSListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout |
Tiempo de espera de la cookie. Es obligatorio cuando Para más información, consulte CreateLoadBalancerHTTPListener y CreateLoadBalancerHTTPSListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie |
Nombre de la cookie configurada en el servidor. Longitud: de 1 a 200 caracteres. Solo puede contener letras ASCII y dígitos. No puede incluir comas (,), puntos y coma (;) ni espacios, y tampoco puede comenzar con el signo de dólar ($). Es obligatorio cuando Para más información, consulte CreateLoadBalancerHTTPListener y CreateLoadBalancerHTTPSListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar el grupo de políticas de control de acceso para SLB
Anotación: Varias, como se muestra a continuación en la tabla. Las tres anotaciones son obligatorias.
Antes de usar esta anotación para crear un SLB con control de acceso, cree un grupo de políticas de control de acceso en la consola de Classic Load Balancer (CLB) y registre su ID (acl-id).
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status |
Habilite el control de acceso. Valores válidos:
Valor predeterminado: |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id |
ID del grupo de políticas de control de acceso vinculado al listener. Es obligatorio cuando |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type |
Tipo de control de acceso. Valores válidos:
|
v1.9.3.164-g2105d2e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # Does not support multiple policy groups.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Especificar el puerto de redirección para SLB
El reenvío de puertos redirige las solicitudes HTTP a puertos HTTPS.
Anotación: Varias, como se muestra a continuación en la tabla. Las tres anotaciones son obligatorias.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID del certificado en Alibaba Cloud. Inicie sesión en la consola CLB y consulte el ID del certificado en la página Certificates. Nota
Para crear un certificado, consulte Select an Alibaba Cloud-issued certificate. |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port |
Reenvíe las solicitudes HTTP a un puerto HTTPS específico. Ejemplo: |
v1.9.3.164-g2105d2e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 80
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Establecer el algoritmo de programación para SLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
|
Descripción |
Versión de CCM compatible |
|
Algoritmo de programación. Valores válidos:
Valor predeterminado: Para conocer más valores válidos, consulte el campo |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Crear un listener UDP
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear un listener HTTP
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
Comprobación de estado: las comprobaciones de estado de los listeners HTTP están deshabilitadas de forma predeterminada. Para garantizar la disponibilidad del servicio backend, configure comprobaciones de estado HTTP o TCP en el puerto del listener.
Acceso dentro del clúster: Cuando se accede al servicio mediante la IP del CLB desde dentro del clúster, el tráfico de la solicitud podría truncarse internamente y provocar problemas de acceso. Consulte Set hostname for Service para forzar el tráfico a través del CLB agregando una anotación. Para más detalles, consulte Notes on accessing LoadBalancer Service External IP from within the cluster.
|
Descripción |
Versión de CCM compatible |
|
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear un listener HTTPS
Anotación: Varias, como se muestra a continuación en la tabla.
Las solicitudes HTTPS se descifran en la capa del CLB y se envían a los pods backend como solicitudes HTTP.
Comprobación de estado: las comprobaciones de estado de los listeners HTTPS están deshabilitadas de forma predeterminada. Para garantizar la disponibilidad del servicio backend, configure comprobaciones de estado HTTP o TCP en el puerto del listener.
Acceso dentro del clúster: Cuando se accede al servicio mediante la IP del CLB desde dentro del clúster, el tráfico de la solicitud podría truncarse internamente y provocar problemas de acceso. Consulte Set hostname for Service para forzar el tráfico a través del CLB agregando una anotación. Para más detalles, consulte Notes on accessing LoadBalancer Service External IP from within the cluster.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID del certificado en Alibaba Cloud. Inicie sesión en la consola CLB y consulte el ID del certificado en la página Certificates. Nota
Para crear un certificado, consulte Select an Alibaba Cloud-issued certificate. |
v1.9.3.164-g2105d2e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Error de protocolo SSL al acceder al CLB desde dentro del clúster
Síntomas
Después de Create HTTPS listener para un servicio, este funciona correctamente cuando se accede desde fuera del clúster. Sin embargo, al usar curl para acceder al puerto HTTPS del CLB asociado al servicio desde un nodo o pod dentro del clúster, se devuelve el siguiente error:
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
Causa
Este problema ocurre por las reglas de IP Virtual Server (IPVS) en el nodo:
Configuración del servicio: un listener HTTPS en un CLB solo admite el protocolo HTTP para los servicios de backend. Por lo tanto, debe configurar el servicio para reenviar el tráfico desde
port: 443haciatargetPort: 80. Luego, ACK crea una regla de IPVS en el nodo que reenvía directamente el tráfico del puerto443al puerto de backend80.Reenvío en la capa 4: IPVS opera en la capa 4 de la pila de protocolos TCP/IP. Solo reenvía paquetes de datos TCP y no analiza sintácticamente protocolos de la capa de aplicación como TLS o HTTPS.
Incompatibilidad de protocolos: el cliente (curl) envía una solicitud HTTPS que contiene datos del handshake de TLS. IPVS reenvía esta solicitud directamente al puerto HTTP
80del servicio de backend. Como este puerto no está configurado para TLS, no puede analizar sintácticamente la solicitud. En consecuencia, el servicio de backend devuelve un error HTTP400y el cliente reporta un error de protocolo SSL.
Solución
Agregue la anotación service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname al servicio. Esta anotación evita que se generen reglas de IPVS en los nodos y obliga a que el tráfico dentro del clúster pase por el CLB. De este modo, se garantiza que el CLB gestione correctamente el handshake de TLS. Para obtener más información, consulte .
Configurar certificados de nombres de dominio adicionales para el listener HTTPS
Anotación: varias, como se muestra a continuación en la tabla.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID del certificado en Alibaba Cloud. Inicie sesión en la consola de CLB y consulte el ID del certificado en la página Certificates. Nota
Para crear un certificado, consulte Select an Alibaba Cloud-issued certificate. |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions |
Especifique los nombres de dominio adicionales y los ID de certificado con el formato Inicie sesión en la consola de CLB y consulte el ID del certificado en la página Certificates. |
v2.13.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions: "${DOMAIN_1}:${CERT_ID_1},${DOMAIN_2}:${CERT_ID_2}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Crear un listener con comprobación de estado
Configurar la comprobación de estado TCP
Anotación: varias, como se muestra a continuación en la tabla. Todas las anotaciones son obligatorias.
Los puertos TCP tienen habilitadas las comprobaciones de estado de forma predeterminada.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
Habilite las comprobaciones de estado para los listeners TCP y UDP. Valores válidos:
Valor predeterminado: |
v2.6.0 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
Tipo de comprobación de estado. Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
Tiempo de espera para recibir una respuesta de la comprobación de estado, aplicable al modo TCP. Si la instancia ECS de backend no responde correctamente dentro del tiempo especificado, la comprobación falla. Unidad: segundos. Rango válido: [1, 300]. Si el valor de |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Número de comprobaciones de estado exitosas consecutivas necesarias para cambiar el estado de salud del servidor de backend de Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerTCPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Número de comprobaciones de estado fallidas consecutivas necesarias para cambiar el estado de salud del servidor de backend de success a fail. Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerTCPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalo entre comprobaciones de estado. Unidad: segundos. Rango válido: [1, 50]. Valor predeterminado: 2. Para obtener más información, consulte CreateLoadBalancerTCPListener. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "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: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar la comprobación de estado UDP
Anotación: varias, como se muestra a continuación en la tabla. Todas las anotaciones son obligatorias.
Los puertos UDP tienen habilitadas las comprobaciones de estado de forma predeterminada.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
Habilite las comprobaciones de estado para los listeners TCP y UDP. Valores válidos:
Valor predeterminado: |
v2.6.0 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
Tiempo de espera para recibir una respuesta de la comprobación de estado, aplicable al modo TCP. Si la instancia ECS de backend no responde correctamente dentro del tiempo especificado, la comprobación falla. Unidad: segundos. Rango válido: [1, 300]. Si el valor de |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Número de comprobaciones de estado exitosas consecutivas necesarias para cambiar el estado de salud del servidor de backend de fail a success. Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerUDPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Número de comprobaciones de estado fallidas consecutivas necesarias para cambiar el estado de salud del servidor de backend de success a fail. Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerUDPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalo entre comprobaciones de estado. Unidad: segundos. Rango válido: [1, 50]. Valor predeterminado: 2. Para obtener más información, consulte CreateLoadBalancerUDPListener. |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Deshabilitar la comprobación de estado para listeners TCP y UDP
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
|
Descripción |
Versión de CCM compatible |
|
Habilite las comprobaciones de estado para los listeners TCP y UDP. Valores válidos:
Valor predeterminado: |
v2.6.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # Disable health check
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Configurar la comprobación de estado HTTP
Anotación: varias, como se muestra a continuación en la tabla.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag |
Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
Tipo de comprobación de estado. Valores válidos:
Valor predeterminado: Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri |
URI para las comprobaciones de estado. No es obligatorio cuando el tipo de comprobación es TCP. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode |
Códigos de estado HTTP que indican una comprobación exitosa. Separe varios códigos de estado con comas inglesas. Valores válidos:
Valor predeterminado: Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain |
Nombre de dominio para las comprobaciones de estado. Valores válidos:
Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout |
Tiempo de espera para recibir una respuesta de la comprobación de estado, aplicable al modo HTTP. Si la instancia ECS de backend no responde correctamente dentro del tiempo especificado, la comprobación falla. Unidad: segundos. Rango válido: [1, 300]. Si el valor de Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
Número de comprobaciones de estado exitosas consecutivas necesarias para cambiar el estado de salud del servidor de backend de fail a success. Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
Número de comprobaciones de estado fallidas consecutivas necesarias para cambiar el estado de salud del servidor de backend de success a fail. Rango válido: [2, 10]. Valor predeterminado: 3. Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
Intervalo entre comprobaciones de estado. Unidad: segundos. Rango válido: [1, 50]. Valor predeterminado: 2. Para obtener más información, consulte CreateLoadBalancerHTTPListener. |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method |
Método de comprobación de estado para listeners HTTP. Valores válidos:
|
v2.3.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
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-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
# Set HTTP status code for health check (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
# Set domain for health check (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
# Set health check method (optional)
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar el drenaje de conexiones para el listener
Anotación: varias, como se muestra a continuación en la tabla. Todas las anotaciones son obligatorias.
Aplica únicamente a los protocolos TCP y UDP.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain |
Habilite el drenaje de conexiones. Valores válidos:
|
v2.0.1 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout |
Establezca el tiempo de espera del drenaje de conexiones. Unidad: segundos. Rango válido: [10, 900]. |
v2.0.1 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
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:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar encabezados de solicitud adicionales para el listener
Anotación: varias, como se muestra a continuación en la tabla.
Aplica únicamente a los protocolos HTTP y HTTPS.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto |
Configure si se obtiene el protocolo del listener CLB mediante el encabezado X-Forwarded-Proto. Valores válidos:
Valor predeterminado: |
v2.1.0 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport |
Configure si se obtiene el puerto del listener de la instancia SLB mediante el encabezado XForwardedFor_SLBPORT. Valores válidos:
Valor predeterminado: |
v2.9.1 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport |
Configure si se obtiene el puerto del cliente que accede a la instancia SLB mediante el encabezado XForwardedFor_ClientSrcPort. Valores válidos:
Valor predeterminado: |
v2.9.1 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Establecer el tiempo de espera de conexión inactiva para el listener
Anotación: varias, como se muestra a continuación en la tabla.
Aplica únicamente a los protocolos HTTP y HTTPS.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout |
Establezca el tiempo de espera de conexión inactiva para el listener. Unidad: segundos. Rango válido: [1, 60]. Valor predeterminado: 15 |
v2.1.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Deshabilitar HTTP/2 para el listener
Anotación: varias, como se muestra a continuación en la tabla.
Aplica únicamente al protocolo HTTPS.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID del certificado en Alibaba Cloud. Inicie sesión en la consola de CLB y consulte el ID del certificado en la página Certificates. Nota
Para crear un certificado, consulte Select an Alibaba Cloud-issued certificate. |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled |
Habilite HTTP/2. Valores válidos:
Valor predeterminado: |
v2.1.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Establecer el tiempo de espera de solicitud para el listener
Anotación: varias, como se muestra a continuación en la tabla.
Aplica únicamente a los protocolos HTTP y HTTPS.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout |
Establezca el tiempo de espera de la solicitud. Unidad: segundos. Rango válido: [1, 180]. Valor predeterminado: 60 Si el servidor de backend no responde dentro del periodo de espera, SLB deja de esperar y devuelve un error HTTP 504 al cliente. |
v2.3.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Establecer el tiempo de espera de conexión para el listener
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout
Aplica únicamente al protocolo TCP.
|
Descripción |
Versión de CCM compatible |
|
Tiempo de espera de conexión. Unidad: segundos. Rango válido: [10, 900]. Para obtener más información, consulte CreateLoadBalancerTCPListener. |
v2.3.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar la política de seguridad para el listener
Anotación: varias, como se muestra a continuación en la tabla.
Aplica únicamente al protocolo HTTPS.
|
Anotación |
Descripción |
Versión de CCM compatible |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
Separe varios valores con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
ID del certificado en Alibaba Cloud. Inicie sesión en la consola de CLB y consulte el ID del certificado en la página Certificates. Nota
Para crear un certificado, consulte Select an Alibaba Cloud-issued certificate. |
v1.9.3.164-g2105d2e-aliyun y posteriores |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy |
La política de seguridad incluye las versiones de TLS opcionales y los conjuntos de cifrado para HTTPS. Para obtener más información, consulte CreateLoadBalancerHTTPSListener. Valores válidos:
Valor predeterminado: |
v2.4.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Configurar los protocolos TCP y UDP simultáneamente para el listener
Esta función requiere la versión v1.24 o posterior del clúster de Kubernetes. Para consultar las instrucciones de actualización, consulte Upgrade ACK cluster Kubernetes version.
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
type: LoadBalancer
Configurar Proxy Protocol para listeners TCP y UDP
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
Cuando se accede al servicio desde dentro del clúster mediante la IP del CLB, el tráfico de la solicitud podría truncarse internamente y causar problemas de acceso. Consulte Set hostname for Service para forzar el paso del tráfico por el CLB mediante una anotación. Para obtener más detalles, consulte Notes on accessing LoadBalancer Service External IP from within the cluster.
|
Descripción |
Versión de CCM compatible |
|
Configure Proxy Protocol para los listeners TCP y UDP. Cuando está habilitado, Proxy Protocol transmite la dirección de origen del cliente a los servidores de backend. Valores válidos:
Valor predeterminado: Importante
Esta función no admite migración sin interrupciones. Cambiar Proxy Protocol requiere detener el servicio. Configure esta opción con precaución. |
v2.6.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Operaciones típicas del grupo de servidores de backend
Usar nodos worker con etiquetas específicas como servidores de backend
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label
|
Descripción |
Versión de CCM compatible |
|
Especifique los nodos worker que se montarán en el backend del CLB mediante etiquetas. Separe varias etiquetas con comas inglesas (,). Ejemplo: |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Usar los nodos donde residen los pods como servidores de backend
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
El valor predeterminado de externalTrafficPolicy es el modo Cluster, que monta todos los nodos del clúster en el backend. El modo Local monta únicamente los nodos donde residen los pods.
|
Descripción |
Versión de CCM compatible |
|
Algoritmo de programación. Valores válidos:
Valor predeterminado: |
v1.9.3 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
Quitar nodos en estado unschedulable del backend del CLB
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
|
Descripción |
Versión de CCM compatible |
|
Elimine los nodos SchedulingDisabled del backend del CLB. Valores válidos:
Valor predeterminado: |
v1.9.3.164-g2105d2e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Montar ENI de pods directamente en el backend del CLB
Anotación: service.beta.kubernetes.io/backend-type
|
Descripción |
Valor predeterminado |
Versión de CCM compatible |
|
Tipo de servidor de backend del CLB. Valores válidos:
|
|
v1.9.3.164-g2105d2e-aliyun y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/backend-type: "eni"
name: nginx
spec:
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
Reutilizar un grupo de servidores virtuales existente
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
Admite la reutilización de grupos de servidores virtuales existentes. Aplica únicamente al reutilizar instancias CLB existentes. Para ver ejemplos de uso, consulte Achieve cross-cluster service deployment by reusing existing SLB instances.
Establecer el peso de tráfico para un Service
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
En escenarios donde varios Services reutilizan el mismo CLB, use esta anotación para establecer el peso de tráfico del Service actual. Esta anotación aplica únicamente al reutilizar grupos de servidores virtuales existentes. Para ver ejemplos de uso, consulte Achieve cross-cluster service deployment by reusing existing SLB instances.
Ignorar las actualizaciones de peso de los servidores de backend
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
|
Descripción |
Versión de CCM compatible |
|
Omita la actualización de los pesos de los servidores de backend en el grupo de servidores virtuales durante la sincronización del Service. Use esta configuración cuando gestione los pesos de los servidores de backend manualmente fuera de CCM. Valores válidos:
Valor predeterminado: |
v2.11.1 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
Establecer el peso predeterminado de los servidores de backend
Anotación: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
|
Descripción |
Versión de CCM compatible |
|
Establezca el peso predeterminado para los servidores del grupo. Un peso mayor genera más tráfico de solicitudes. Rango válido: [0, 100]. Si no se especifica, el sistema usa el peso predeterminado correspondiente al tipo de red actual. Esta configuración no aplica cuando la instancia de backend es ECS y el valor de |
v2.14.0 y posteriores |
apiVersion: v1
kind: Service
metadata:
annotations:
# Set default server weight in server group to 35
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer