Résoudre les problèmes de mise à jour de Google Distributed Cloud

Si vous rencontrez des problèmes de mise à jour de Google Distributed Cloud, les sections suivantes peuvent vous aider à résoudre le problème. Pour en savoir plus sur les paramètres pouvant être mis à jour, consultez Éléments pouvant être mis à jour dans les clusters.

Si vous avez besoin d'aide supplémentaire, contactez l'assistance Cloud Customer Care.

Délai d'inactivité pour la mise à jour

Le délai avant expiration de la mise à jour est calculé de manière dynamique en fonction des ressources à mettre à jour. Toutefois, le calcul n'est pas toujours précis. Lorsque le délai de mise à jour est dépassé, des erreurs semblables à celles-ci s'affichent :

  • Dans le cluster d'utilisateur :

    Failed to update the cluster:...timed out waiting for the condition...
    
  • Dans le cluster d'administrateur :

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

Ce type d'erreur de délai d'inactivité peut être ignoré en toute sécurité, et vous pouvez réessayer la commande de mise à jour. Si vous réessayez d'exécuter la commande et que le délai est dépassé à nouveau avec le même message d'erreur, contactez le Cloud Customer Care.

La mise à jour contient plusieurs modifications

Les commandes gkectl update admin et gkectl update cluster ne permettent pas de mettre à jour plusieurs paramètres en une seule commande. Lorsque la configuration contient une différence avec plusieurs paramètres modifiés, une erreur semblable à l'exemple suivant est renvoyée :

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

Cette erreur peut se produire pour diverses raisons, y compris les suivantes :

  • Une erreur ou une mauvaise configuration.
  • Vous avez déjà exécuté gkectl upgrade avec la différence de configuration et vous vous attendiez à ce que les modifications soient appliquées.
    • gkectl upgrade n'applique aucune différence de configuration, sauf la version.
  • Vous avez modifié la configuration pour une autre mise à jour de fonctionnalité, mais vous avez oublié d'exécuter la commande gkectl update.

Si vous rencontrez ce comportement, examinez la différence dans le message d'erreur et mettez à jour les paramètres requis un par un à l'aide de plusieurs commandes gkectl update. Pour identifier les modifications, vous pouvez utiliser gkectl get-config pour générer des fichiers de configuration à partir d'un cluster et afficher l'état et la configuration existants.

Modifications non compatibles

Les commandes gkectl update cluster et gkectl update admin ignorent les modifications non compatibles et affichent des messages d'erreur semblables aux exemples suivants :

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

Si vous rencontrez ce comportement, examinez la différence dans le message d'erreur et effectuez les actions suivantes :

  • Si la modification est involontaire, modifiez le fichier YAML de configuration et ne conservez que les modifications correctes et voulues.
    • Dans l'exemple précédent, si vous ne souhaitez pas désactiver AdvancedNetworking, définissez advancedNetworking: true dans le fichier de configuration YAML.
  • Si la modification est intentionnelle, l'erreur indique qu'elle n'est pas prise en charge. Effectuez l'une des actions suivantes :

L'image d'OS n'existe pas

Les commandes gkectl update cluster et gkectl update admin peuvent échouer avec des échecs de vérification préliminaire OS Images semblables aux exemples suivants :

  • Dans le cluster d'utilisateur :

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

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

Ces erreurs peuvent se produire si l'image de l'OS a été supprimée de manière inattendue dans votre environnement vCenter, par exemple par un job de nettoyage périodique.

Pour réimporter les images d'OS importées, exécutez la commande gkectl prepare comme suit :

gkectl prepare \
    --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --skip-upload-container-images

Espace de stockage insuffisant pour les nouveaux pools de nœuds

Lorsque vous ajoutez des pools de nœuds, la commande gkectl update cluster peut échouer avec des erreurs de vérification préliminaire VSphere Datastore FreeSpace semblables à l'exemple suivant :

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

Cet échec indique que le datastore ne dispose pas d'espace libre suffisant pour exécuter les nouveaux pools de nœuds. Utilisez l'une des options suivantes pour libérer de l'espace et permettre à l'opération de réussir :

  • Libérez de l'espace dans le datastore.
  • Configurez un autre datastore nodePools[].vsphere.datastore pour le pool de nœuds.

Étape suivante

Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.