Cómo analizar el uso del montón de memoria del operador de Kubernetes de AlloyDB Omni

En este documento, se describe cómo puedes obtener un resumen del montón de memoria del operador de AlloyDB Omni para ayudar a diagnosticar y depurar posibles problemas de memoria. Sigue estos pasos para obtener un montón de memoria para el análisis:

  1. Determina qué implementación de operador de AlloyDB Omni analizar. El operador de AlloyDB Omni incluye dos implementaciones, y puedes analizar el montón de memoria de cualquiera de ellas. Para identificar las dos implementaciones, ejecuta el siguiente comando:

    kubectl get deployment -n alloydb-omni-system

    En el resultado, se muestran las dos implementaciones en el espacio de nombres alloydb-omni-system:

    • fleet-controller-manager
    • local-controller-manager

    Puedes obtener el montón de memoria de cualquiera de las implementaciones. A modo de demostración, en estos pasos, se muestra cómo obtener el montón de memoria para la implementación de local-controller-manager.

  2. Para activar el análisis de memoria, especifica un puerto disponible para usar. Después de especificar el puerto, se reinicia el pod. Para especificar un puerto disponible, usa el argumento pprof-address en la implementación:

    1. Ejecuta el siguiente comando para abrir la implementación en un editor de texto:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Especifica el puerto en el args de la sección container en la plantilla spec:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Guarda el archivo de implementación. Después de guardar el archivo de implementación, se reiniciará el pod.

  3. Espera a que se reinicie el pod antes de continuar con el siguiente paso.

    Para asegurarte de que se reinició el pod, ejecuta el siguiente comando:

    kubectl get pod -n alloydb-omni-system

    Verifica que el valor de salida en la columna STATUS del pod sea Running y que el valor de salida en su columna AGE sea de corta duración. Por ejemplo, si la columna STATUS es Running y el valor de la columna AGE es 50s, el pod se ejecuta durante 50 segundos después del reinicio.

  4. Activa la redirección de puertos con el siguiente comando:

    kubectl port-forward -n alloydb-omni-system DEPLOYMENT_POD_NAME PORT:PORT

    Reemplaza DEPLOYMENT_POD_NAME por el nombre de tu implementación tal como aparece en la columna NAME del resultado del siguiente comando:

    kubectl get pod -n alloydb-omni-system
  5. En otra terminal, ejecuta el siguiente comando para crear un archivo con una instantánea del montón de memoria de la implementación:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Guarda el archivo heap.out y úsalo para ver el montón de memoria de la implementación del operador de AlloyDB Omni que elegiste analizar.

  7. Para desactivar el análisis de memoria, quita el argumento pprof-address con el puerto que usaste de la implementación:

    1. Abre la implementación en un editor de texto:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Quita la línea de puerto --pprof-address=:PORT del args de la sección container en la plantilla spec que agregaste antes.

¿Qué sigue?