Resolver problemas de atualização do GKE no VMware

Se você tiver problemas com a atualização do GKE no VMware, as seções a seguir podem ajudar a solucionar o problema. Para mais informações sobre quais configurações podem ser atualizadas, consulte O que pode e o que não pode ser atualizado em clusters.

Se precisar de mais ajuda, entre em contato com o Suporte do Google.

Tempo limite da atualização

O tempo limite da atualização é calculado dinamicamente com base nos recursos a serem atualizados. No entanto, o cálculo nem sempre é preciso. Quando a atualização expirar, erros semelhantes aos seguintes serão exibidos:

  • No cluster de usuário:

    Failed to update the cluster:...timed out waiting for the condition...
    
  • No cluster de administrador:

    Failed to update the admin cluster:...timed out waiting for the condition...
    

Esse tipo de erro de tempo limite pode ser ignorado com segurança, e você pode repetir o comando de atualização. Se você tentar executar o comando novamente e ele expirar com a mesma mensagem de erro, entre em contato com o Suporte do Google.

A atualização contém várias alterações

Os comandos gkectl update admin e gkectl update cluster não permitem atualizar várias configurações em um comando. Quando o config contém uma diferença com várias configurações sendo alteradas e um erro semelhante ao exemplo a seguir é retornado:

Update summary for cluster X:
    antiAffinityGroups: enabled to be set to true from false          &config.AAGSpec{
        -   Enabled: false,
        +   Enabled: true,
          }
    user master cpu to be set to 5 from 4          config.NodePoolProps{
            Role:        "master",
            MachineType: "standard-master",
        -   CPUs:        4,
        +   CPUs:        5,
            MemoryMB:    8192,
            Replicas:    3,
            ... // 2 identical fields
            Labels:         nil,
            NodeTaints:     nil,
        -   Vsphere:        nil,
        &config.NodePoolVsphereSpec{Datastore: "lifecycle-workloads1-datastore1"},
        +   Vsphere:        nil,
            BootDiskSizeGB: nil,
            OSImageType:    "",
            ... // 5 identical fields
          }

Exit with error:
Failed to update the cluster: the update contains multiple changes. Please
update only one feature at a time

Esse erro pode acontecer por vários motivos, incluindo os seguintes:

  • Um erro ou configuração incorreta.
  • Você executou gkectl upgrade anteriormente com a diferença de configuração e esperava que as alterações fossem aplicadas.
    • gkectl upgrade não aplica nenhuma diferença de configuração, exceto o bump na versão.
  • Você já editou a configuração de outra atualização de recurso, mas esqueceu de executar o comando gkectl update.

Se você encontrar esse comportamento, analise a diferença na mensagem de erro e atualize as configurações necessárias uma por uma com vários comandos gkectl update. Para ajudar a identificar alterações, é possível usar gkectl get-config para gerar arquivos de configuração de um cluster e visualizar o estado e a configuração.

Alterações incompatíveis

Os comandos gkectl update cluster e gkectl update admin ignoram alterações não compatíveis e exibem mensagens de erro semelhantes aos seguintes exemplos:

detected unsupported changes: (-current +desired)
    ...
-   AdvancedNetworking:       &true,
+   AdvancedNetworking:       &false,
    ...
, which will be ignored

Se você encontrar esse comportamento, analise a diferença na mensagem de erro e execute as seguintes ações:

  • Se a alteração não for intencional, edite o arquivo YAML de configuração e atualize somente com as alterações corretas e pretendidas.
    • No exemplo anterior, se você não pretendia desativar AdvancedNetworking, defina advancedNetworking: true no arquivo YAML de configuração.
  • Se a alteração for intencional, o erro indica que ela não é compatível. Realize uma das seguintes ações:

A imagem do SO não existe

Os comandos gkectl update cluster e gkectl update admin podem falhar com falhas na verificação de simulação OS Images, semelhantes aos exemplos a seguir:

  • No cluster de usuário:

    - Validation Category: OS Images
        - [FAILURE] User cluster OS images exist: os images  [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    
  • No cluster de administrador:

    - Validation Category: OS Images
        - [FAILURE] Admin cluster OS images exist: os images [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    

Esses erros podem acontecer se a imagem do SO tiver sido removida inesperadamente no ambiente do vCenter, como por um job de limpeza periódica.

Para importar novamente as imagens de importação do SO, execute o comando gkectl prepare. Para mais informações e o comando gkectl prepare completo, veja como importar imagens do SO para o vSphere.

Espaço livre insuficiente do armazenamento de dados para novos pools de nós

Quando você adiciona novos pools de nós, o comando gkectl update cluster pode falhar com erros de verificação de simulação do VSphere Datastore FreeSpace semelhantes ao exemplo a seguir:

  - [FAILURE] VSphere Datastore FreeSpace: vCenter datastore: xxxx insufficient
  FreeSpace, requires at least xxx  GB

Essa falha indica que o armazenamento de dados não tem espaço livre suficiente para executar os novos pools de nós. Use uma das opções a seguir para fornecer espaço à operação:

  • Libere espaço do armazenamento de dados.
  • Configure um armazenamento de dados nodePools[].vsphere.datastore diferente para o pool de nós.

A seguir

Se precisar de mais ajuda, entre em contato com o Suporte do Google.