Créer un cluster d'administrateur

Ce document explique comment créer un cluster d'administrateur pour GKE sur VMware. Le cluster d'administrateur exécute le plan de contrôle Kubernetes pour le cluster d'administrateur lui-même et pour les clusters d'utilisateur associés. Vous devez créer un cluster d'administrateur avant de créer des clusters d'utilisateur pour exécuter vos charges de travail.

Pour en savoir plus sur le cluster d'administrateur, consultez la présentation de l'installation.

Présentation de la procédure

Voici les principales étapes à suivre pour créer un cluster d'administrateur :

  1. Se connecter au poste de travail administrateur
    Cette VM dispose des outils nécessaires pour créer des clusters.
  2. Remplir vos fichiers de configuration
    Spécifiez les détails de votre nouveau cluster d'administrateur en remplissant et en validant un fichier de configuration du cluster d'administrateur, un fichier de configuration des identifiants, et éventuellement un fichier de bloc d'adresses IP.
  3. Importez des images d'OS dans vSphere et transférez des images de conteneurs vers le registre privé, le cas échéant.
    Exécutez gkectl prepare.
  4. (Facultatif) Créer un équilibreur de charge Seesaw.
    Si vous avez décidé d'utiliser l'équilibreur de charge Seesaw, exécutez gkectl create loadbalancer.
  5. Créez un cluster d'administrateur.
    Utilisez gkectl pour créer un cluster d'administrateur comme spécifié dans les fichiers de configuration terminés. Le onprem-admin-cluster-controller du cluster d'amorçage temporaire gère la création du cluster d'administrateur.
  6. Vérifiez que votre cluster d'administrateur est en cours d'exécution.
    Utilisez kubectl pour afficher les nœuds de votre cluster.

À la fin de cette procédure, vous disposerez d'un cluster d'administrateur en cours d'exécution que vous pourrez utiliser pour créer et gérer des clusters d'utilisateur.

Avant de commencer

  • Assurez-vous d'avoir créé un poste de travail administrateur.

  • Consultez le document de planification des adresses IP. Assurez-vous que vous disposez de suffisamment d'adresses IP et examinez à nouveau la manière dont vous souhaitez que les nœuds de votre cluster obtiennent leurs adresses IP : DHCP ou statique. Si vous décidez d'utiliser des adresses IP statiques, vous devez renseigner un fichier de bloc d'adresses IP contenant les adresses choisies.

  • Consultez la présentation de l'équilibrage de charge et examinez votre décision concernant le type d'équilibreur de charge que vous souhaitez utiliser. Pour certains équilibreurs de charge, vous devez configurer l'équilibreur de charge avant de créer votre cluster d'administrateur.

  • Consultez la section privateRegistry et décidez si vous souhaitez utiliser un registre public ou privé pour les composants GKE sur VMware.

  • Examinez le champ osImageType et choisissez le type de système d'exploitation à exécuter sur vos nœuds de cluster d'administrateur.

1. Se connecter au poste de travail administrateur

Suivez les instructions pour obtenir une connexion SSH sur votre poste de travail d'administrateur. Le poste de travail d'administrateur dispose des outils dont vous avez besoin pour créer votre cluster d'administrateur. Le compte de service d'accès au composant est également activé sur le poste de travail d'administrateur.

Effectuez toutes les étapes décrites dans cette rubrique sur votre poste de travail administrateur dans le répertoire d'accueil.

2. Remplir le fichier de configuration

Lorsque gkeadm a créé votre poste de travail administrateur, il a généré un fichier de configuration nommé admin-cluster.yaml. Ce fichier de configuration vous permet de créer votre cluster d'administrateur.

Familiarisez-vous avec le fichier de configuration en analysant le fichier de configuration du cluster d'administrateur. Nous vous recommandons de conserver ce document ouvert dans un nouvel onglet ou dans une autre fenêtre, car vous en aurez besoin pour réaliser les étapes suivantes.

name

Si vous souhaitez spécifier un nom pour votre cluster d'administrateur, renseignez le champ name.

bundlePath

Le bundle est un fichier compressé contenant les composants du cluster. Il est inclus dans le poste de travail d'administrateur. Ce champ est déjà renseigné.

vCenter

La plupart des champs de ce fichier de cette section sont déjà renseignés avec les valeurs que vous avez saisies lors de la création de votre poste de travail administrateur. À l'exception du champ dataDisk que vous devez remplir ici.

network

Décidez comment vous souhaitez que les nœuds de votre cluster obtiennent leurs adresses IP. Vous disposez des options suivantes :

  • Depuis un serveur DHCP que vous avez configuré à l'avance. Définissez network.ipMode.type sur "dhcp".

  • À partir d'une liste d'adresses IP statiques que vous fournissez. Définissez network.ipMode.type sur "static", puis créez un fichier de bloc d'adresses IP qui fournit les adresses IP statiques. Pour obtenir un exemple de fichier de bloc d'adresses IP, consultez la section Exemple de fichiers de configuration renseignés.

Remplissez les autres champs de la section "Réseau" du fichier de configuration si nécessaire:

  • Si vous avez décidé d'utiliser des adresses IP statiques pour vos nœuds de cluster, le network.ipMode.ipBlockFilePath et la section network.hostconfig sont obligatoires. La section network.hostconfig contient des informations sur les serveurs NTP, les serveurs DNS et les domaines de recherche DNS utilisés par vos nœuds de cluster.

  • Si vous utilisez un cluster d'administrateur haute disponibilité ou l'équilibreur de charge Seesaw, la section network.hostconfig est obligatoire, que vous utilisiez des adresses IP DHCP ou statiques pour vos nœuds de cluster.

  • Les champs network.podCIDR et network.serviceCIDR sont préremplis avec des valeurs que vous pouvez laisser inchangées, sauf si elles entrent en conflit avec des adresses déjà utilisées sur votre réseau. Kubernetes utilise ces plages pour attribuer des adresses IP aux pods et aux services de votre cluster.

Que vous utilisiez un serveur DHCP ou que vous spécifiiez une liste d'adresses IP statiques, vous devez disposer de suffisamment d'adresses IP disponibles pour votre cluster d'administrateur. Cela inclut les nœuds du cluster d'administrateur qui exécutent les plans de contrôle de tous les clusters d'utilisateur associés. Pour connaître le nombre d'adresses IP dont vous avez besoin, consultez la section Planifier vos adresses IP.

Cluster d'administrateur haute disponibilité (preview)

Si vous souhaitez créer un cluster d'administrateur à haute disponibilité, remplissez les sections network.controlPlaneIPBlock et network.hostConfig. Définissez également adminMaster.replicas sur 3.

Un cluster d'administrateur à haute disponibilité comporte trois nœuds qui exécutent les composants du plan de contrôle.

Les clusters d'administrateur haute disponibilité présentent les exigences et limites suivantes:

  • Un cluster d'utilisateur géré par un cluster d'administrateur haute disponibilité doit activer Controlplane V2.

  • Les clusters d'administrateur à haute disponibilité ne sont pas compatibles avec la sauvegarde et la restauration.

  • Vous ne pouvez pas utiliser l'équilibreur de charge Seesaw pour un cluster d'administrateur haute disponibilité. De plus, vous ne pouvez pas utiliser l'équilibreur de charge Seesaw pour un cluster d'utilisateur géré par un cluster d'administrateur à haute disponibilité.

  • Les clusters d'administrateur haute disponibilité ne sont pas compatibles avec la rotation des autorités de certification du cluster d'administrateur.

  • Les clusters d'administrateur haute disponibilité ne sont pas compatibles avec gkectl get-config.

loadBalancer

Réservez une adresse IP virtuelle pour le serveur d'API Kubernetes de votre cluster d'administration. Réservez une autre adresse IP virtuelle pour le serveur de modules complémentaires. Indiquez vos adresses IP virtuelles comme valeurs pour loadBalancer.vips.controlPlaneVIP et loadBalancer.vips.addonsVIP.

Pour en savoir plus, consultez la page Adresses IP virtuelles dans le sous-réseau du cluster d'administrateur.

Choisissez le type d'équilibrage de charge que vous souhaitez utiliser. Vous disposez des options suivantes :

  • Équilibrage de charge groupé MetalLB. Définissez loadBalancer.kind sur "MetalLB".

  • Équilibrage de charge groupé Seesaw. Définissez loadBalancer.kind sur "Seesaw", puis remplissez la section loadBalancer.seesaw.

  • Équilibrage de charge intégré avec F5 BIG-IP Définissez loadBalancer.kind sur "F5BigIP", puis remplissez la section f5BigIP.

  • Équilibrage de charge manuel. Définissez loadBalancer.kind sur "ManualLB", puis remplissez la section manualLB.

Pour en savoir plus sur les options d'équilibrage de charge, consultez la page Présentation de l'équilibrage de charge.

antiAffinityGroups

Définissez antiAffinityGroups.enabled sur true ou false en fonction de votre préférence.

Utilisez ce champ pour indiquer si vous souhaitez que GKE sur VMware crée des règles d'anti-affinité VMware Distributed Resource Scheduler (DRS) pour vos nœuds de cluster d'administrateur, ce qui entraîne leur propagation sur au moins trois hôtes physiques dans votre centre de données.

adminMaster

Si vous souhaitez spécifier le processeur et la mémoire pour les nœuds de plan de contrôle du cluster d'administrateur, renseignez les champs cpus et memoryMB dans la section adminMaster.

Aperçu: si vous souhaitez créer un cluster d'administrateur à haute disponibilité, définissez le champ replicas de la section adminMaster sur 3. Sinon, définissez-la sur 1.

addonNode

Définissez addonNode.autoResize.enabled sur true ou false en fonction de votre préférence.

proxy

Si le réseau qui contiendra vos nœuds de cluster d'administrateur se trouve derrière un serveur proxy, remplissez la section proxy.

privateRegistry

Décidez où vous souhaitez conserver les images de conteneur pour les composants GKE sur VMware. Vous disposez des options suivantes :

  • Container Registry

  • Votre propre registre Docker privé.

Si vous souhaitez utiliser votre propre registre privé, remplissez la section privateRegistry.

componentAccessServiceAccountKeyPath

GKE sur VMware utilise votre compte de service d'accès aux composants pour télécharger des composants de cluster à partir de Container Registry. Ce champ contient le chemin d'accès à un fichier de clé JSON pour votre compte de service d'accès au composant.

Ce champ est déjà renseigné.

gkeConnect

Enregistrez votre cluster d'administrateur dans un parc Google Cloud en remplissant la section gkeConnect.

stackdriver

Si vous souhaitez activer Cloud Logging et Cloud Monitoring pour votre cluster, renseignez la section stackdriver.

Cette section est obligatoire par défaut. Autrement dit, si vous ne remplissez pas cette section, vous devez inclure l'option --skip-validation-stackdriver lorsque vous exécutez gkectl create admin.

cloudAuditLogging

Si vous souhaitez intégrer les journaux d'audit du serveur d'API Kubernetes de votre cluster avec les journaux d'audit Cloud, remplissez la section cloudAuditLogging.

clusterBackup

Si vous souhaitez activer la sauvegarde du cluster d'administrateur, définissez clusterBackup.datastore sur le Datastore vSphere dans lequel vous souhaitez enregistrer les sauvegardes du cluster.

autoRepair

Si vous souhaitez activer la réparation automatique des nœuds pour votre cluster d'administrateur, définissez autoRepair.enabled sur true.

secretsEncryption

Si vous souhaitez activer le chiffrement permanent des secrets, remplissez la section secretsEncryption.

osImageType

Choisissez le type d'image d'OS que vous souhaitez utiliser pour les nœuds de cluster d'administrateur et renseignez la section osImageType en conséquence.

Exemple de fichiers de configuration préremplis

Voici un exemple de fichier de bloc d'adresses IP renseigné et de fichier de configuration de cluster d'administrateur renseigné. La configuration active certaines des fonctionnalités disponibles, mais pas toutes.

vc-01-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5
    - ip: 172.16.20.15
      hostname: admin-host6
    - ip: 172.16.20.16
      hostname: admin-host7
    - ip: 172.16.20.17
      hostname: admin-host8

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.11.0-gke.543-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "vc-01-pool-1"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  dataDisk: "vc01-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "vc-01-ipblock.yaml"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
    addonsVIP: "172.16.20.60"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
componentAccessServiceAccountKeyPath: "sa-key.json"
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
clusterBackup:
  datastore: "vc-01-datastore-bu"
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

Valider votre fichier de configuration

Après avoir rempli le fichier de configuration du cluster d'administrateur, exécutez gkectl check-config pour vérifier que le fichier est valide :

gkectl check-config --config ADMIN_CLUSTER_CONFIG

Remplacez ADMIN_CLUSTER_CONFIG par le chemin d'accès de votre fichier de configuration de cluster d'administrateur.

Si la commande renvoie des messages d'échec, corrigez les problèmes et validez à nouveau le fichier.

Si vous souhaitez ignorer les validations les plus longues, transmettez l'option --fast. Pour ignorer des validations individuelles, utilisez les options --skip-validation-xxx. Pour en savoir plus sur la commande check-config, consultez la page Exécuter des vérifications préliminaires.

3. Obtenir des images de l'OS

Exécutez gkectl prepare pour initialiser votre environnement vSphere :

gkectl prepare --config ADMIN_CLUSTER_CONFIG

La commande gkectl prepare exécute les tâches préparatoires suivantes :

  • Importe les images d'OS vers vSphere et les marque comme modèles de VM.

  • Transfère les images de conteneurs vers votre registre, si vous utilisez un registre Docker privé.

  • Valide, éventuellement, des attestations de version des images de conteneur, vérifiant ainsi que les images ont été conçues et signées par Google, et sont prêtes pour le déploiement.

4. Créer un équilibreur de charge Seesaw (facultatif)

Rappelez-vous que vous disposez de plusieurs options d'équilibrage de charge pour votre cluster d'administrateur : Metal LB, Seesaw, F5 BIG-IP ou manuel.

Si vous avez choisi d'utiliser l'équilibreur de charge Seesaw, suivez la procédure dans cette section. Sinon, vous pouvez ignorer cette section.

Créez et configurez la VM pour votre équilibreur de charge Seesaw :

gkectl create loadbalancer --config ADMIN_CLUSTER_CONFIG

5. Créer le cluster d'administrateur

Créez le cluster d'administrateur :

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Reprendre la création du cluster d'administrateur après un échec

Si la création du cluster d'administrateur échoue ou est annulée, vous pouvez exécuter à nouveau la commande create :

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Localiser le fichier kubeconfig du cluster d'administrateur

La commande gkectl create admin crée un fichier kubeconfig nommé kubeconfig dans le répertoire actuel. Vous aurez besoin de ce fichier kubeconfig ultérieurement pour interagir avec votre cluster d'administrateur.

Le fichier kubeconfig contient le nom de votre cluster d'administrateur. Pour afficher le nom du cluster, vous pouvez exécuter la commande suivante:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Le résultat affiche le nom du cluster. Exemple :

NAME
gke-admin-tqk8x

Si vous le souhaitez, vous pouvez modifier le nom et l'emplacement de votre fichier kubeconfig.

Gérer le fichier checkpoint.yaml

Lorsque vous avez exécuté la commande gkectl create admin pour créer le cluster d'administrateur, elle a créé un fichier de point de contrôle dans le même dossier de datastore que le disque de données du cluster d'administrateur. Par défaut, ce fichier est nommé DATA_DISK_NAME‑checkpoint.yaml. Si la longueur de DATA_DISK_NAME est supérieure ou égale à 245 caractères, le nom est DATA_DISK_NAME.yaml en raison de la limite de longueur des noms de fichier vSphere.

Ce fichier contient l'état et les identifiants du cluster d'administrateur, et il est utilisé pour les mises à niveau ultérieures. Ne supprimez pas ce fichier, sauf si vous suivez la procédure de suppression d'un cluster d'administrateur.

Si vous avez activé le chiffrement de VM dans votre instance de vCenter Server, vous devez disposer du droit Opérations cryptographiques.Accès direct avant de créer ou de mettre à niveau votre cluster d'administrateur. Sinon, le point de contrôle ne sera pas importé. Si vous ne pouvez pas obtenir ce privilège, vous pouvez désactiver l'importation du fichier de point de contrôle à l'aide de l'indicateur masqué --disable-checkpoint lorsque vous exécutez une commande appropriée.

Le fichier checkpoint.yaml est automatiquement mis à jour lorsque vous exécutez la commande gkectl upgrade admin ou lorsque vous exécutez une commande gkectl update qui affecte le cluster d'administrateur.

6. Vérifier que votre cluster d'administrateur est en cours d'exécution

Vérifiez que votre cluster d'administrateur est en cours d'exécution :

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Remplacez ADMIN_CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster d'administrateur.

Le résultat affiche les nœuds du cluster d'administrateur. Exemple :

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

7. Sauvegarder des fichiers

Nous vous recommandons de sauvegarder le fichier kubeconfig de votre cluster d'administrateur. Autrement dit, copiez le fichier kubeconfig depuis votre poste de travail administrateur vers un autre emplacement. Si vous perdez l'accès au poste de travail administrateur ou si le fichier kubeconfig sur ce poste est accidentellement supprimé, vous avez toujours accès au cluster d'administrateur.

Nous vous recommandons également de sauvegarder la clé SSH privée de votre cluster d'administrateur. Ensuite, si vous perdez l'accès au cluster d'administrateur, vous pouvez toujours utiliser SSH pour vous connecter aux nœuds du cluster d'administrateur. Cela vous permettra de résoudre et d'examiner les problèmes de connectivité au cluster d'administrateur.

Extrayez la clé SSH du cluster d'administrateur dans un fichier nommé admin-cluster-ssh-key:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \
    -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key

Vous pouvez maintenant sauvegarder admin-cluster-ssh-key à un autre emplacement de votre choix.

Dépannage

Consultez la section Dépanner la création et la mise à niveau du cluster.

Étapes suivantes

Créer un cluster d'utilisateur