Todos los productos
Search
Centro de documentos

Alibaba Cloud Service Mesh:Customize Waypoint resource usage and HPA

Última actualización: Sep 05, 2026

Cuando los proxies de Waypoint manejan grandes volúmenes de tráfico L7 o requieren un cierre ordenado para conexiones de larga duración, las asignaciones predeterminadas de recursos pueden resultar insuficientes. Service Mesh (ASM) permite personalizar las solicitudes de CPU y memoria, los límites de escalado del Horizontal Pod Autoscaler (HPA) y el comportamiento de drenado del proxy para los proxies de Waypoint desplegados mediante la Gateway API en modo Ambient.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • La versión 1.2.1 o posterior del componente Gateway API instalada en su clúster

Funcionamiento

Para personalizar un Waypoint, defina la configuración deseada en un ConfigMap y haga referencia a este desde el recurso Gateway. ASM lee el ConfigMap y combina sus modificaciones con la configuración predeterminada de recursos mediante un Strategic Merge Patch. El ConfigMap solo necesita contener los campos que desea cambiar; ASM se encarga de la fusión y crea o actualiza el Deployment y el HPA de Waypoint según corresponda.

El ConfigMap admite tres secciones de configuración:

Sección

Propósito

data.horizontalPodAutoscaler

Configuración de HPA, como los recuentos mínimo y máximo de réplicas

data.deployment

Configuración a nivel de pod, como las solicitudes de recursos del contenedor y el tiempo de cierre ordenado

data.proxyConfig

Configuración de ejecución del proxy de Istio, como la duración del drenado y el comportamiento de terminación

Crear un ConfigMap con configuración personalizada

El ConfigMap debe encontrarse en el mismo namespace que el recurso Gateway al que configura.

  1. Guarde el siguiente contenido como gw-options.yaml.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: gw-options
    data:
      horizontalPodAutoscaler: |
        spec:
          minReplicas: 2
          maxReplicas: 2
      deployment: |
        spec:
          # Do not configure replicas when HPA is enabled.
          # replicas: 4
          template:
            spec:
              containers:
              - name: istio-proxy
                resources:
                  requests:
                    cpu: 1000m
              # The maximum wait time before a pod goes offline.
              terminationGracePeriodSeconds: 120
      proxyConfig: |
        # The proxy drain duration.
        drainDuration: 30s
        # The maximum duration for the proxy to stop draining. Ensure that terminationGracePeriodSeconds > terminationDrainDuration > drainDuration.
        terminationDrainDuration: 60s
  2. Aplique el ConfigMap.

    kubectl apply -f gw-options.yaml

Referencia de parámetros del ConfigMap

Parámetros de HPA (data.horizontalPodAutoscaler)

Parámetro

Descripción

spec.minReplicas

Número mínimo de réplicas de pods de Waypoint. En el ejemplo anterior, se establece en 2.

spec.maxReplicas

Número máximo de réplicas de pods de Waypoint. En el ejemplo anterior, se establece en 2 (recuento fijo de réplicas).

Importante

No establezca replicas en la sección de Deployment cuando HPA esté habilitado. El controlador de HPA gestiona los recuentos de réplicas automáticamente, y un valor estático de replicas entra en conflicto con las decisiones de escalado de HPA.

Parámetros de Deployment (data.deployment)

Parámetro

Descripción

spec.template.spec.containers[].name

Nombre del contenedor. Establézcalo en istio-proxy para el contenedor de proxy de Waypoint.

spec.template.spec.containers[].resources.requests.cpu

Solicitud de CPU para el proxy de Waypoint. En el ejemplo anterior, se establece en 1000m (1 vCPU). Aumente este valor para namespaces con alto tráfico L7.

spec.template.spec.terminationGracePeriodSeconds

Tiempo máximo (en segundos) que Kubernetes espera antes de finalizar forzosamente un pod durante el cierre. En el ejemplo anterior, se establece en 120.

Parámetros de ProxyConfig (data.proxyConfig)

Parámetro

Descripción

drainDuration

Duración durante la cual el proxy de Envoy drena las conexiones activas en el proceso de cierre. En el ejemplo anterior, se establece en 30s.

terminationDrainDuration

Duración máxima que el proxy espera después de iniciar el cierre ordenado antes de terminar las conexiones restantes. En el ejemplo anterior, se establece en 60s.

Importante

Los tres parámetros de tiempo deben cumplir con la siguiente restricción de orden: terminationGracePeriodSeconds > terminationDrainDuration > drainDuration. Si no se respeta esta restricción, las conexiones podrían finalizarse antes de que el proxy termine el drenado, lo que provocaría fallos en las solicitudes.

Vincular el ConfigMap al recurso Gateway

Después de crear el ConfigMap, haga referencia a él desde el recurso Gateway mediante el campo infrastructure.parametersRef.

  1. Guarde el siguiente contenido como gateway.yaml. El bloque infrastructure.parametersRef hace referencia al ConfigMap gw-options. ASM lee esta referencia y aplica los valores del ConfigMap al Deployment y al HPA de Waypoint.

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      name: waypoint
      namespace: default
    spec:
      infrastructure:
        parametersRef:
          group: ""
          kind: ConfigMap
          name: gw-options
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
  2. Aplique el recurso Gateway.

    kubectl apply -f gateway.yaml

Comprobar la configuración

Después de aplicar ambos recursos, compruebe que ASM haya combinado correctamente la configuración del ConfigMap en el Deployment y el HPA de Waypoint.

  1. Revise el Deployment de Waypoint. En la salida, confirme que:

    • El contenedor istio-proxy tenga cpu: 1000m bajo resources.requests.

    • terminationGracePeriodSeconds sea 120.

    kubectl get deployment waypoint -n default -o yaml
  2. Revise el HPA. Confirme que MINPODS sea 2 y MAXPODS sea 2 para el HPA de Waypoint.

    kubectl get hpa -n default