Resolva problemas de operações simultâneas


Quando tenta modificar o cluster do Google Kubernetes Engine (GKE) ou os respetivos conjuntos de nós, a sua ação pode ser bloqueada temporariamente porque está a ser executada outra operação. Este problema pode atrasar atualizações críticas, a administração de clusters e as implementações de aplicações.

Use esta página para saber como identificar a operação que está a ser executada. Compreender a operação ativa ajuda a estimar o atraso e determinar quando repetir a ação.

Estas informações são importantes para os programadores de aplicações, que podem encontrar estes limites ao implementar ou modificar aplicações, e para os administradores e operadores da plataforma, que gerem o ciclo de vida geral do cluster, as atualizações e precisam de resolver problemas de tarefas administrativas bloqueadas. Para mais informações sobre as funções comuns e as tarefas de exemplo a que fazemos referência no Google Cloud conteúdo, consulte Funções e tarefas comuns do utilizador do GKE.

Compreenda os erros de operação simultânea

No GKE, uma operação de cluster é uma ação que modifica o estado do painel de controlo do cluster ou dos respetivos conjuntos de nós. Estas operações são geridas pelo GKE e podem ser iniciadas por si ou pelo GKE para fins de manutenção. As operações de cluster comuns incluem o seguinte:

  • Criar ou eliminar o cluster.
  • A atualizar a versão do painel de controlo do cluster.
  • Criar, atualizar, redimensionar ou eliminar node pools.
  • Modificar as definições ao nível do cluster, como ativar ou desativar funcionalidades.
  • Reparações automáticas do plano de controlo iniciadas pelo GKE.

Quando realiza operações nos seus clusters, pode ver mensagens de erro semelhantes às seguintes:

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

Estes erros podem incluir os seguintes valores:

  • OPERATION_NAME: o ID exclusivo de uma operação que já está a ser executada no seu cluster. Use este nome para acompanhar o estado desta operação pré-existente que está a impedir o início da nova operação.
  • ACTIONING: a ação que está a ser realizada no cluster. Por exemplo, Creating ou Updating.
  • CLUSTER_NAME: o nome do cluster que a operação está a segmentar.

Estes erros ocorrem porque o GKE limita o número de operações que podem ser executadas ao mesmo tempo para evitar conflitos. Geralmente, o GKE permite apenas uma operação ao nível do cluster ou uma operação por conjunto de nós para ser executada em simultâneo. O GKE também executa as suas próprias ações automáticas, como atualizações do plano de controlo, que contam para este limite e podem impedir temporariamente que inicie uma nova tarefa.

Resolva erros de operações simultâneas

Se receber um erro que indica que outra operação está em curso, identifique a tarefa em curso e aguarde pela respetiva conclusão:

  1. Se não souber o nome da operação de bloqueio, liste todas as operações em curso e pendentes do cluster:

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

    Substitua o seguinte:

    • LOCATION: a região ou a zona do Compute Engine (por exemplo, us-central1 ou us-central1-a) para o cluster, consoante o cluster seja regional ou zonal.
    • CLUSTER_NAME: o nome do cluster com a operação com falhas.

      O resultado é semelhante ao seguinte:

      {
         "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"
      }
      

      Na saída, reveja o campo name para cada operação. Este valor é o nome da operação que está a impedir o início da nova operação. Precisa deste valor para o passo seguinte.

      Para mais informações sobre os outros campos no resultado, consulte a documentação da API para projects.locations.operations.

  2. Aguarde pela conclusão da operação:

    gcloud container operations wait OPERATION_NAME \
        --location=LOCATION
    

    Substitua OPERATION_NAME pelo nome de uma operação de bloqueio de uma mensagem de erro ou do passo anterior.

    Este comando monitoriza ativamente a operação e sai quando a operação estiver concluída.

  3. Depois de a operação de bloqueio ter o estado DONE, tente novamente a operação que causou o erro.

O que se segue?