Exécuter des vérifications préliminaires

Cette page explique comment exécuter des vérifications préliminaires sur votre fichier de configuration GKE sur VMware.

Présentation

Lors de l'installation, vous exécutez gkectl create-config pour générer un fichier de configuration GKE sur VMware. Le fichier de configuration guide votre installation : vous fournissez des informations sur votre environnement vSphere, votre réseau et votre équilibreur de charge, ainsi que sur l'apparence souhaitée de vos clusters. Vous pouvez générer un fichier de configuration avant ou après la création d'un poste de travail administrateur. Pour que certaines vérifications réussissent, elles doivent être exécutées à partir du poste de travail administrateur.

Après avoir modifié le fichier pour répondre aux besoins de votre environnement et de vos clusters, vous pouvez l'utiliser pour créer des clusters dans votre environnement sur site.

Avant de créer des clusters, vous devez exécuter gkectl check-config pour valider le fichier de configuration à l'aide de plusieurs vérifications préliminaires. Si la commande renvoie des messages FAILURE, corrigez les problèmes et validez à nouveau le fichier. Si une validation de fonctionnalité renvoie des messages WARNING, vous devez résoudre les problèmes sous-jacents pour pouvoir utiliser cette fonctionnalité.

Modes de vérification préliminaire et ignorer les validations

gkectl check-config dispose d'un mode par défaut et d'un mode rapide :

  • En mode par défaut, la commande valide tous les champs. En outre, le mode par défaut crée des machines virtuelles (VM) vSphere temporaires dans le cadre de ses validations, ce qui peut prendre plus de temps.

  • En mode rapide, la commande ignore les vérifications qui créent des VM de test et n'exécute que les vérifications rapides. Pour activer le mode rapide, vous devez transmettre l'option --fast.

Vous pouvez ignorer des validations spécifiques en transmettant d'autres options, décrites à la section gkectl check-config --help.

Trafic entre le poste de travail administrateur et les VM de test

En mode "Par défaut", la vérification préalable crée des VM de test pour le cluster. Chaque VM de test exécute un serveur HTTP qui écoute sur le port 443 et sur les ports de nœud que vous avez spécifiés dans votre fichier de configuration.

Plusieurs adresses IP sont attribuées aux VM de test. Si votre fichier de configuration indique que vos nœuds de cluster obtiendront leurs adresses IP à partir d'un serveur DHCP, la vérification préliminaire utilise le serveur DHCP pour attribuer des adresses IP aux VM de test. Si votre fichier de configuration indique que vos nœuds de cluster se verront attribuer des adresses IP statiques, la vérification préliminaire attribue les adresses IP statiques que vous avez spécifiées dans vos fichiers de bloc d'adresses IP aux VM de test.

La vérification préliminaire, exécutée sur le poste de travail administrateur, envoie des requêtes HTTP aux VM de test à l'aide des différentes adresses IP attribuées aux VM. Les requêtes sont envoyées au port 443 et aux ports de nœud que vous avez spécifiés dans votre fichier de configuration.

Quand dois-je exécuter les vérifications préliminaires ?

Il est recommandé d'exécuter les vérifications préliminaires aussi tôt que possible, avant de tenter de créer des clusters. L'exécution des vérifications préliminaires peut vous aider à vérifier que vous avez correctement configuré votre réseau et votre environnement vSphere.

Si vous utilisez GKE sur VMware version 1.2.0-gke.6, exécutez gkectl check-config deux fois:

  1. Exécutez gkectl check-config --fast.

  2. Exécutez gkectl prepare.

  3. Exécutez à nouveau gkectl check-config, sans l'option --fast.

Ces deux exécutions sont nécessaires car gkectl prepare importe le modèle de VM de l'image d'OS du nœud de cluster dans votre environnement vSphere. Ce modèle de VM doit être en place avant d'exécuter l'ensemble des validations.

Dans GKE sur VMware version 1.2.1 et ultérieures, la commande check-config importe elle-même le modèle de VM. Vous pouvez donc exécuter l'ensemble des validations avant d'exécuter gkectl prepare:

  1. Exécutez gkectl check-config, sans l'option --fast.

  2. Exécutez gkectl prepare.

Les vérifications préliminaires permettent de valider les valeurs que vous avez fournies au fichier. Vous n'avez pas besoin de remplir tous les champs du fichier de configuration pour effectuer des vérifications préliminaires sur le fichier. Vous pouvez valider le fichier de manière itérative lorsque vous renseignez ses champs. Par exemple, si vous ne souhaitez valider que votre configuration vCenter, vous pouvez ne remplir que les champs vcenter et effectuer des vérifications sur ceux-ci.

N'oubliez pas que votre configuration GKE sur VMware devient immuable après la création de vos clusters. L'exécution de vérifications préliminaires vous permet d'identifier et de résoudre les problèmes de configuration avant de créer vos clusters.

Conserver la VM de test pour le débogage

À partir de la version 1.2.1 de GKE sur VMware, la commande gkectl check-config comporte une option --cleanup.

Lorsque la commande gkectl check-config effectue un ensemble complet de validations, elle crée une VM de test et une clé SSH associée. Si vous souhaitez conserver la VM de test et la clé SSH à des fins de débogage, définissez --cleanup sur "false".

La valeur par défaut de --cleanup est "true".

Liste des vérifications préliminaires

Les vérifications préliminaires valident chaque champ du fichier de configuration. Voici les vérifications actuelles :

Catégorie Description
Fichier de configuration

Valide généralement le format et les valeurs de chaque champ et spécification.

L'option --skip-validation-config permet de l'ignorer.

L'option --skip-validation-proxy permet d'ignorer la validation du champ proxy.

Internet

Valide l'accès Internet aux domaines requis. Valide la configuration du proxy en fonction de l'emplacement où vous exécutez gkectl.

L'option --skip-validation-internet permet de l'ignorer.

Image de l'OS

Valide l'existence des images de l'OS.

L'option --skip-validation-os-images permet de l'ignorer.

Version d'OS Windows

Valide la version du système d'exploitation Windows.

Vérifie que la version de Windows est compatible avec l'outil de ligne de commande gkeadm lors de la création de postes de travail administrateur. Sachez que, même si l'outil gkeadm est disponible pour Windows 10, Windows Server 2019 et Linux, il n'y a pas de vérifications préliminaires pour Linux. Cette validation commence à partir de la version 1.4.1.

Version du cluster

Valide la version du cluster d'administrateur, la version du cluster d'utilisateur et la version de gkectl pour la création et la mise à niveau.

L'option --skip-validation-cluster-version permet de l'ignorer.

État du cluster

Vérifiez que le cluster d'utilisateur ou d'administrateur est opérationnel avant la mise à niveau :

  • Cluster d'administrateur : la vérification inclut le service Kubernetes, l'état des composants, les objets DaemonSet, les déploiements, les machines et les pods.
  • Cluster d'utilisateur : la vérification inclut le service Kubernetes, les points de terminaison de l'API du cluster, les objets StatefulSet, les déploiements, les déploiements de machines, les machines et les pods.

L'option --skip-validation-cluster-health permet de l'ignorer.

Entrée Vérifie si le cluster d'utilisateur possède un objet passerelle Istio avant la mise à niveau.
Adresse IP réservée

Valide que suffisamment d'adresses IP sont disponibles pour la création et la mise à niveau.

L'option --skip-validation-reserved-ips permet de l'ignorer.

Google Cloud
ID du projet
[*].projectid
Valide les ID de projet fournis dans les différents champs de la configuration. Si l'ID du projet est manquant, la validation est ignorée.
Compte de service d'enregistrement
registerserviceaccountkeypath
Permet de vérifier que le compte de service contient les rôles IAM requis. Valide l'activation des API requises.
Compte de service Connect
agentserviceaccountkeypath
Permet de vérifier que le compte de service contient les rôles IAM requis. Valide l'activation des API requises.
Compte de service Google Cloud Observability
stackdriver.serviceaccountkeypath
Permet de vérifier que le compte de service contient les rôles IAM requis. Valide l'activation des API requises.
L'option --skip-validation-gcp permet de l'ignorer.
Accès à gcr.io/gke-on-prem-release Valide l'accès au registre d'images de conteneurs de GKE sur VMware hébergé dans Container Registry.

L'option --skip-validation-docker permet de l'ignorer.

Registre Docker
privateregistryconfig
S'il est configuré, il valide l'accès au registre Docker.

L'option --skip-validation-docker permet de l'ignorer.

vCenter Vérifie que tous les champs vcenter sont présents, et vérifie également les éléments suivants:
Identifiants
vcenter.credentials.[*]
Valide l'authentification à vCenter Server à l'aide des identifiants utilisateur fournis.
Version vSphere Valide la compatibilité des versions de vCenter et ESXi.
Centre de données
vcenter.datacenter
Valide l'existence du centre de données vSphere.
Datastore
vcenter.datastore
Valide l'existence du datastore vSphere.
Disque de données
vcenter.datadisk
Vérifie que le disque de machine virtuelle (VMDK, virtual machine disk) vSphere n'existe pas déjà dans vSphere.
Pool de ressources
vcenter.resourcepool
Vérifie que le pool de ressources vSphere existe.
Réseau
vcenter.network
Valide l'existence du réseau vSphere.

L'option --skip-validation-infra permet de l'ignorer.

Stockage
Pilote CSI vSphere Valide que le pilote CSI vSphere est activé s'il existe des PersistentVolumes intree ou CSI vSphere. Autrement dit, dans le fichier de configuration du cluster d'utilisateur, storage.vSphereCSIDisabled n'est pas défini sur true.
Paramètres StorageClass

Vérifie que la StorageClass ne comporte aucun des paramètres incompatibles suivants:

  • hostfailurestolerate (défaillance de l'hôte)
  • forcer le provisionnement
  • réservation en cache
  • bandes
  • réservation d'espace d'objets
  • limite d'IOPS
  • diskformat

Si votre cluster contient des StorageClasses avec l'un des paramètres précédents, cela peut signifier que vous devez migrer vos volumes.

Pour en savoir plus, consultez la page Remarques sur la migration des volumes vSphere In-Tree et la section Problèmes connus sur les mises à niveau vers la version 1.15.

Annotations dans les PersistentVolumes et PersistentVolumeClaims vSphere in-tree créés de manière statique

Avant la mise à niveau, vérifie les annotations dans les PersistentVolumes vSphere in-tree et vSphere PersistentVolumeClaims:

  • Les PersistentVolumes vSphere in-tree créés de manière statique comportent l'annotation pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume.
  • Les PersistentVolumesClaims vSphere créées de manière statique comportent les annotations volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume et volume.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume.

Si votre cluster contient des PersistentVolumes vSphere In-tree ou des PersistentVolumeClaims vSphere sans ces annotations, vous devez annoter les PersistentVolumes et les PersistentVolumeClaims avant de continuer. Consultez la section Remarques sur la migration des volumes vSphere In-Tree.

Charge de travail CSI

Vérifie que le cluster peut exécuter correctement une charge de travail utilisant un PersistentVolume provisionné de manière dynamique créé via le pilote CSI vSphere.

Cette vérification s'exécute lors de la mise à niveau, et uniquement s'il existe des volumes vSphere dans l'arborescence et aucun volume CSI vSphere.

Cette vérification:

  1. Vérifie qu'il ne reste aucune ressource des exécutions précédentes de la validation.
  2. Recherche ou crée une StorageClass avec le champ de l'approvisionneur défini sur "csi.vsphere.vmware.com".
    1. Dans les clusters d'utilisateur, il sélectionne la StorageClass CSI standard-rwo.
    2. Dans les clusters d'administrateur, il trouve une StorageClass dont le champ d'approvisionneur est défini sur csi.vsphere.vmware.com. S'il n'existe aucune StorageClass dans le cluster, le test crée temporairement une StorageClass CSI et l'utilise lors de la vérification.
  3. Crée une PersistentVolumeClaim dans l'espace de noms par défaut à l'aide de la StorageClass trouvée ou créée à l'étape précédente et attend que le PersistentVolume créé dynamiquement soit dans la phase Bound.
  4. Crée une tâche d'écriture dans l'espace de noms par défaut qui installe le PersistentVolume créé ci-dessus. Un pod d'écriture est planifié. Au démarrage, il écrit une chaîne dans un fichier du système de fichiers installé.
  5. Désassemble la tâche d'écriture et son pod associé.
  6. Crée une tâche de lecteur dans l'espace de noms par défaut qui installe le PersistentVolume créé ci-dessus. Un pod de lecture est planifié. Au démarrage, il lit le fichier écrit par le pod d'écriture en s'assurant que les données écrites par le pod d'écriture sont lues.
  7. Désassemble la tâche du lecteur et son pod associé.
  8. Elle supprime l'objet PersistentVolumeClaim. Par conséquent, le PersistentVolume est également supprimé.
  9. Elle supprime la StorageClass si elle a été créée pendant le test.

Hôtes pour les groupes d'anti-affinité

Valide que le nombre d'hôtes physiques vCenter est d'au moins trois si antiAffinityGroups est activé.

Pour désactiver antiAffinityGroups pour un cluster, consultez antiAffinityGroups.enabled et cette note de version.

L'option --skip-validation-infra permet de l'ignorer.

Équilibreur de charge

Valide la configuration de l'équilibrage de charge :

  • Si le mode d'équilibrage de charge est intégré (lbmode: Integrated), vérifie que tous les champs bigip sont présents dans les spécifications admincluster et usercluster.
  • Si le mode d'équilibrage de charge est manuel (lbmode: Manual), vérifie que tous les champs manuallbspec sont présents dans les spécifications admincluster et usercluster.
Équilibrage de charge intégré
bigip.credentials.[*] Valide vos identifiants F5 BIG-IP.
bigip.partition Vérifie que la partition fournie existe.
Rôle utilisateur F5 BIG-IP Vérifie que l'utilisateur F5 BIG-IP fourni possède le rôle Administrateur ou Administrateur de ressources.
bigip.vips.[*] Valide les adresses IP virtuelles fournies.

L'option --fast ou --skip-validation-load-balancer permet de l'ignorer.

Équilibrage de charge manuel
Configuration de la mise en réseau Valide les adresses IP virtuelles, les adresses IP des nœuds, etc.

L'option --fast ou --skip-validation-load-balancer permet de l'ignorer.

[*].manuallbspec.[*] Valide les ports de nœud fournis.
L'option --skip-validation-load-balancer permet de l'ignorer.
Mise en réseau

Valide la disponibilité des plages CIDR, des adresses IP virtuelles et des adresses IP statiques fournies (le cas échéant). Vérifie que les adresses IP ne se chevauchent pas.

L'option --skip-validation-net-config permet de l'ignorer.

DNS

Valide la disponibilité du serveur DNS fourni.

L'option --skip-validation-dns permet de l'ignorer.

NTP

Vérifie que le serveur NTP (Network Time Protocol) est disponible.

L'option --skip-validation-tod permet de l'ignorer.

IPV

Pingue les adresses IP virtuelles fournies. Cette vérification réussit si le ping échoue, ce qui indique que l'adresse IP virtuelle attendue n'est pas déjà prise.

L'option --skip-validation-vips permet de l'ignorer.

Adresses IP de nœuds

Pingue les adresses IP de nœuds fournies. Cette vérification réussit si le ping échoue, ce qui indique que l'adresse IP de nœud attendue n'est pas déjà prise.

L'option --skip-validation-node-ips permet de l'ignorer.

Résultats des vérifications préliminaires

Les vérifications préliminaires peuvent renvoyer les résultats suivants :

SUCCESS
Le champ et sa valeur ont été validés.
FAILURE
Le champ et/ou sa valeur n'ont pas été validés. Si une vérification renvoie un message FAILURE, corrigez les problèmes et validez à nouveau le fichier.
SKIPPED

La vérification a été ignorée, probablement parce qu'elle n'est pas pertinente pour votre configuration. Par exemple, si vous utilisez un serveur DHCP, les vérifications DNS et les vérifications d'adresses IP de nœuds, qui ne concernent qu'une configuration IP statique, sont ignorées.

Si vous transmettez une option qui ignore une vérification, la vérification ignorée ne renvoie pas de résultat SKIPPED ; elle n'est pas exécutée et n'apparaît pas du tout dans le résultat de la commande.

UNKNOWN

La vérification ignorée a renvoyé un code différent de zéro. Vous pouvez considérer que les vérifications qui renvoient UNKNOWN ont échoué. La valeur UNKNOWN indique généralement que la vérification n'a pas réussi à exécuter un package système, tel que nslookup ou gcloud.

Prochainement

Les vérifications préliminaires suivantes seront ajoutées dans une prochaine version :

  • Serveur NTP

Exécuter des vérifications préliminaires

Pour exécuter des vérifications préliminaires, exécutez la commande suivante :

gkectl check-config --config [CONFIG]

[CONFIG] est le chemin d'accès à votre fichier de configuration GKE sur VMware.

Exécuter en mode rapide

Si vous le préférez, vous pouvez exécuter des vérifications préliminaires en "mode rapide", ce qui ignore les validations qui créent des VM de test temporaires, telles que les validations des adresses IP virtuelles d'équilibrage de charge et les validations des adresses IP de nœuds. Pour ce faire, transmettez --fast :

gkectl check-config --config [CONFIG] --fast

Ignorer des validations spécifiques

Vous pouvez transmettre des options permettant d'ignorer précisément des validations spécifiques, telles que DNS, proxy et mise en réseau. Chacune de ces options est précédée de --skip-[VALIDATION].

Pour en savoir plus sur les options disponibles permettant d'ignorer des validations, exécutez la commande suivante. Vous pouvez également consulter la documentation de référence sur gkectl check-config :

gkectl check-config --help

Par exemple, pour ignorer les validations de l'équilibreur de charge, procédez comme suit :

gkectl check-config --config my-config.yaml --skip-validation-load-balancer 

Annuler des vérifications préliminaires

Si vous avez commencé à exécuter des vérifications préliminaires et que vous souhaitez les annuler, appuyez deux fois sur CTRL + C. Si une vérification préliminaire a créé une VM de test, l'annulation devrait également nettoyer automatiquement la VM.

Nettoyer une VM de test

Si une VM de test est toujours présente après la fin des vérifications préliminaires, vous pouvez la supprimer de vCenter. Le nom d'une VM de test se présente sous la forme suivante :

check-config-[dhcp|static]-[random number]

Pour supprimer la VM, procédez comme suit :

  1. Effectuez un clic droit sur la VM, puis cliquez sur Alimentation > Mettre hors tension.

  2. Une fois la VM éteinte, effectuez un nouveau clic droit sur la VM, puis cliquez sur Supprimer du disque.

Exemple

Vous trouverez ci-dessous un exemple de résultat de la commande. Dans cet exemple, la configuration en cours de validation utilise le mode d'équilibrage de charge intégré et des adresses IP statiques sans registre Docker externe :

- Validation Category: Config Check
    - [SUCCESS] Config

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: GCP
    - [SUCCESS] GCP Service
    - [SUCCESS] GCP Service Account

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Data Disk
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network
    - [SUCCESS] VSphere CSI Driver

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster F5 (credentials, partition and user role)
    - [SUCCESS] User Cluster F5 (credentials, partition and user role)

- Validation Category: Network Configuration
    - [SUCCESS] CIDR, VIP and static IP (availability and overlapping)

- Validation Category: DNS
    - [SUCCESS] DNS (availability)

- Validation Category: VIPs
    - [SUCCESS] ping (availability)

- Validation Category: Node IPs
    - [SUCCESS] ping (availability)

Now running slow validation checks. ...

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with admin cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with user cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster VIP and NodeIP
    - [SUCCESS] Admin Cluster F5 Access
    - [SUCCESS] User Cluster VIP and NodeIP
    - [SUCCESS] User Cluster F5 Access

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: vCenter on test VMs
    - [SUCCESS] Test VM: VCenter Access and Permission

- Validation Category: DNS on test VMs
    - [SUCCESS] Test VM: DNS Availability

- Validation Category: TOD on test VMs
    - [SUCCESS] Test VM: TOD Availability

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

Deleting test VMs with admin cluster configuration...  DONE
Deleting test VMs with user cluster configuration...  DONE

Problèmes connus

  • Pour la version 1.3.0-gke.16 :

    Vous devez exécuter des vérifications rapides (gkectl check-config --fast) pour vos vérifications préliminaires si les deux conditions suivantes s'appliquent :

    1. Vous avez configuré GKE sur VMware pour utiliser un proxy.

    2. Vous avez installé l'un des groupes suivants :

      • Bundle /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz de la page Téléchargements.
      • Bundle /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz du poste de travail administrateur.

    Vous ne pouvez exécuter l'ensemble complet de validation que si vous avez installé l'ensemble complet. Par exemple : /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • Pour la version 1.2.0-gke.6 :

    Si vous utilisez des pools de ressources imbriqués ou le pool de ressources par défaut, gkectl check-config échoue lorsque vous essayez d'exécuter un ensemble complet de validations. Cependant, vous pouvez exécuter un plus petit ensemble de validations en transmettant l'option --fast.

    gkectl check-config --config [CONFIG] --fast

Étapes suivantes