Solucionar problemas con operaciones simultáneas


Cuando intentas modificar tu clúster de Google Kubernetes Engine (GKE) o sus grupos de nodos, es posible que tu acción se bloquee temporalmente porque se está ejecutando otra operación. Este problema puede retrasar las actualizaciones críticas, la administración del clúster y las implementaciones de aplicaciones.

En esta página se explica cómo identificar la operación que se está ejecutando. Conocer la operación activa te ayuda a estimar el retraso y a determinar cuándo volver a intentar la acción.

Esta información es importante tanto para los desarrolladores de aplicaciones, que pueden encontrarse con estos límites al implementar o modificar aplicaciones, como para los administradores y operadores de la plataforma, que gestionan el ciclo de vida general del clúster y las actualizaciones, y que necesitan solucionar problemas con tareas administrativas bloqueadas. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Roles y tareas de usuario habituales de GKE.

Información sobre los errores de operaciones simultáneas

En GKE, una operación de clúster es una acción que modifica el estado del plano de control de tu clúster o de sus grupos de nodos. GKE gestiona estas operaciones, que puedes iniciar tú o GKE con fines de mantenimiento. Entre las operaciones de clúster habituales se incluyen las siguientes:

  • Crear o eliminar el clúster.
  • Actualizando la versión del plano de control del clúster.
  • Crear, actualizar, cambiar el tamaño o eliminar grupos de nodos.
  • Modificar los ajustes a nivel de clúster, como habilitar o inhabilitar funciones.
  • Reparaciones automáticas del plano de control iniciadas por GKE.

Cuando realices operaciones en tus clústeres, es posible que veas mensajes de error similares a los siguientes:

Cluster is running incompatible operation OPERATION_NAME
Cluster is currently being created, deleted, updated or repaired and cannot be updated
Operation OPERATION_NAME is currently ACTIONING cluster CLUSTER_NAME. Please wait and try again once it is done

Estos errores pueden incluir los siguientes valores:

  • OPERATION_NAME: el ID único de una operación que ya se está ejecutando en tu clúster. Usa este nombre para monitorizar el estado de esta operación preexistente que impide que se inicie la nueva operación.
  • ACTIONING: la acción que se está realizando en el clúster. Por ejemplo, Creating o Updating.
  • CLUSTER_NAME: el nombre del clúster al que se dirige la operación.

Estos errores se producen porque GKE limita el número de operaciones que se pueden ejecutar al mismo tiempo para evitar conflictos. Por lo general, GKE solo permite que se ejecute una operación a nivel del clúster o una operación por grupo de nodos simultáneamente. GKE también realiza sus propias acciones automáticas, como las actualizaciones del plano de control, que se tienen en cuenta para este límite y pueden impedir temporalmente que inicies una tarea nueva.

Resolver errores de operaciones simultáneas

Si recibes un error que indica que hay otra operación en curso, identifica la tarea en cuestión y espera a que finalice:

  1. Si no sabes el nombre de la operación de bloqueo, puedes consultar todas las operaciones en curso y pendientes de tu clúster:

     gcloud container operations list \
         --location=LOCATION \
         --filter '(targetLink~/clusters/CLUSTER_NAME$ OR targetLink~/clusters/CLUSTER_NAME/) AND status!=DONE' \
         --format json
    

    Haz los cambios siguientes:

    • LOCATION: la región o la zona de Compute Engine (por ejemplo, us-central1 o us-central1-a) del clúster, en función de si el clúster es regional o zonal.
    • CLUSTER_NAME: el nombre del clúster con la operación fallida.

      El resultado debería ser similar al siguiente:

      {
         "name": "operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff",
         "operationType": "UPDATE_CLUSTER",
         "selfLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff",
         "startTime": "2001-01-01T00:00:00.000000000Z",
         "status": "RUNNING",
         "targetLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME",
         "zone": "LOCATION"
      }
      

      En el resultado, consulta el campo name de cada operación. Este valor es el nombre de la operación que impide que se inicie la nueva operación. Necesitarás este valor para el siguiente paso.

      Para obtener más información sobre los demás campos de la salida, consulta la documentación de la API de projects.locations.operations.

  2. Espera a que se complete la operación:

    gcloud container operations wait OPERATION_NAME \
        --location=LOCATION
    

    Sustituye OPERATION_NAME por el nombre de una operación de bloqueo de un mensaje de error o del paso anterior.

    Este comando monitoriza activamente la operación y se cierra cuando se completa.

  3. Cuando la operación de bloqueo tenga el estado DONE, vuelve a intentar la operación que ha provocado el error.

Siguientes pasos