Créer des clusters d'utilisateur et d'administrateur

Découvrez comment créer un cluster d'administrateur et un cluster d'utilisateur avec la configuration de base.

Les étapes décrites sur cette page supposent que vous avez utilisé gkeadm pour créer votre poste de travail administrateur. Si vous n'avez pas utilisé gkeadm, mais que vous avez suivi la procédure avancée décrite sur la page Créer un poste de travail administrateur avec une adresse IP statique, vous devrez peut-être procéder à des ajustements comme expliqué à chaque étape. Pour un poste de travail d'administrateur DHCP, vous devez utiliser le guide d'installation DHCP correspondant.

Si vous êtes protégé par un proxy, toutes les commandes gkectl utilisent automatiquement le même proxy que celui défini dans votre fichier de configuration pour les requêtes Internet provenant du poste de travail administrateur. Si votre poste de travail n'est pas protégé par le même proxy, consultez la section "Options de proxy manuel" dans les rubriques avancées Créer un poste de travail administrateur : Adresse IP statique | DHCP.

Se connecter en SSH au poste de travail administrateur

Connectez-vous en SSH à votre poste de travail administrateur en suivant les instructions de la section Obtenir une connexion SSH à votre poste de travail administrateur.

Le compte de service sur liste d'autorisation est activé sur votre poste de travail administrateur. Effectuez toutes les étapes restantes de cette page sur votre poste de travail administrateur.

Configurer des adresses IP statiques pour votre cluster d'administrateur

Pour spécifier les adresses IP statiques que vous souhaitez utiliser pour votre cluster d'administrateur, créez un fichier de configuration d'hôte nommé admin-hostconfig.yaml. Pour cet exercice, vous devez spécifier cinq adresses IP à utiliser par le cluster d'administrateur.

Voici un exemple de fichier de configuration d'hôte avec cinq hôtes :

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
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

Le champ ips est un tableau d'adresses IP et de noms d'hôte. Il s'agit des adresses IP et des noms d'hôte que GKE On-Prem va affecter à vos nœuds de cluster d'administrateur.

Dans le fichier de configuration d'hôte, spécifiez également les adresses des serveurs DNS, des serveurs de temps et de la passerelle par défaut que les nœuds du cluster d'administrateur utiliseront.

Le champ searchdomainsfordns est un tableau de domaines de recherche DNS à utiliser dans le cluster. Ces domaines sont utilisés dans le cadre d'une liste de recherche de domaines.

Configurer des adresses IP statiques pour votre cluster d'utilisateur

Pour spécifier les adresses IP statiques que vous souhaitez utiliser pour votre cluster d'utilisateur, créez un fichier de configuration d'hôte nommé user-hostconfig.yaml.

Voici un exemple de fichier de configuration d'hôte comportant trois hôtes :

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.15
      hostname: user-host1
    - ip: 172.16.20.16
      hostname: user-host2
    - ip: 172.16.20.17
      hostname: user-host3

Le champ ips est un tableau d'adresses IP et de noms d'hôte. Il s'agit des adresses IP et des noms d'hôte que GKE On-Prem va attribuer aux nœuds de votre cluster d'utilisateur.

Dans le fichier de configuration de l'hôte, spécifiez également les adresses des serveurs DNS, des serveurs de temps et de la passerelle par défaut que les nœuds du cluster d'utilisateur utiliseront.

Le champ searchdomainsfordns est un tableau de domaines de recherche DNS à utiliser dans le cluster. Ces domaines sont utilisés dans le cadre d'une liste de recherche de domaines.

Champs renseignés dans votre fichier de configuration GKE On-Prem

Rappelez-vous que lorsque vous avez créé votre poste de travail administrateur, vous avez rempli un fichier de configuration nommé admin-ws-config.yaml. L'outil de ligne de commande gkeadm a utilisé votre fichier admin-ws-config.yaml pour créer le poste de travail administrateur.

Lorsque gkeadm a créé votre poste de travail administrateur, il a généré un second fichier de configuration nommé config.yaml. Ce fichier de configuration, qui se trouve sur votre poste de travail administrateur, permet de créer des clusters GKE On-Prem.

Les fichiers admin-ws-config.yaml et config.yaml ont plusieurs champs en commun. Les valeurs de ces champs communs sont déjà renseignées dans votre fichier config.yaml.

Il s'agit des champs déjà renseignés avec les valeurs que vous avez fournies lors de la création de votre poste de travail administrateur :

vcenter:
  credentials:
    address:
    username:
    password:
  datacenter:
  datastore:
  cluster:
  network:
  resourcepool:
  cacertpath:
gkeconnect:
  projectid:
  registerserviceaccountkeypath:
  agentserviceaccountkeypath:
stackdriver:
  projectid:
  serviceaccountkeypath:
gcrkeypath:

Remplir le reste de votre fichier de configuration GKE On-Prem

Vous devez ensuite remplir les autres champs de votre fichier config.yaml.

bundlepath

Le fichier de groupe GKE On-Prem contient tous les composants d'une version particulière de GKE On-Prem. Définissez la valeur de bundlepath sur le chemin d'accès du fichier de groupe du poste de travail administrateur.

bundlepath: /var/lib/gke/bundles/gke-onprem-vsphere-1.4.3-gke.3-full.tgz

vcenter.datadisk

GKE On-Prem crée un disque de machine virtuelle (VMDK) afin d'y stocker les données de l'objet Kubernetes pour le cluster d'administrateur. Le programme d'installation crée le VMDK, mais vous devez lui attribuer un nom dans le champ vcenter.datadisk. Exemple :

vcenter:
  ...
  datadisk: "my-disk.vmdk"
Datastore vSAN : créer un dossier pour le VMDK

Si vous utilisez un datastore vSAN, vous devez placer le VMDK dans un dossier. Vous devez créer le dossier manuellement à l'avance. Pour ce faire, vous pouvez utiliser govc :

govc datastore.mkdir -namespace=true my-gke-on-prem-folder

Définissez ensuite vcenter.datadisk sur le chemin d'accès du VMDK, en y incluant le nom du dossier. Exemple :

vcenter:
...
datadisk: "my-gke-on-prem-folder/my-disk.vmdk"

Dans la version 1.1.1, un problème connu nécessite que vous fournissiez l'identifiant unique universel (UUID) du dossier au lieu de son chemin.

proxy

Si votre réseau se trouve derrière un serveur proxy, vous devez spécifier l'adresse du proxy et toutes les adresses qui ne doivent pas passer par le serveur proxy.

Définissez proxy.url pour spécifier l'adresse HTTP de votre serveur proxy. Vous devez inclure le numéro de port, même s'il est identique au port par défaut du schéma. Le serveur proxy que vous spécifiez ici est utilisé par vos clusters GKE On-Prem. En outre, votre poste de travail administrateur est automatiquement configuré pour utiliser ce même serveur proxy, sauf si vous définissez la variable d'environnement HTTPS_PROXY sur votre poste de travail administrateur.

Configurez proxy.noproxy pour définir une liste d'adresses IP, de plages d'adresses IP, de noms d'hôte et de noms de domaine qui ne doivent pas passer par le serveur proxy. Lorsque GKE On-Prem envoie une requête à l'une de ces adresses, ou à l'un de ces hôtes ou domaines, cette requête est envoyée directement.

Exemple :

proxy:
  url: "http://my-proxy.example.local:80"
  noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"

admincluster.ipblockfilepath

Étant donné que vous utilisez des adresses IP statiques, vous devez disposer d'un fichier de configuration d'hôte comme décrit dans la section Configurer des adresses IP statiques. Indiquez le chemin d'accès de votre fichier de configuration d'hôte dans le champ admincluster.ipblockfilepath. Exemple :

admincluster:
  ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"

admincluster.bigip.credentials

GKE On-Prem doit connaître l'adresse IP ou le nom d'hôte, le nom d'utilisateur et le mot de passe de l'équilibreur de charge F5 BIG-IP. Définissez les valeurs sous admincluster.bigip pour fournir ces informations. Placez une ancre (&bigip-credentials) après credentials afin de ne pas avoir à répéter ces informations dans la section usercluster. Exemple :

admincluster:
  ...
  bigip:
    credentials: &bigip-credentials
      address: "203.0.113.2"
      username: "my-admin-f5-name"
      password: "rJDlm^%7aOzw"

admincluster.bigip.partition

Vous avez précédemment créé une partition BIG-IP pour votre cluster d'administrateur. Définissez admincluster.bigip.partition sur le nom de votre partition. Exemple :

admincluster:
  ...
  bigip:
    partition: "my-admin-f5-partition"

admincluster.vips

Définissez la valeur de admincluster.vips.controlplanevip sur l'adresse IP que vous avez choisi de configurer sur l'équilibreur de charge pour le serveur d'API Kubernetes du cluster d'administrateur. Définissez la valeur de ingressvip sur l'adresse IP que vous avez choisi de configurer dans l'équilibreur de charge pour le service d'entrée du cluster d'administrateur. Exemple :

admincluster:
  ...
  vips:
    controlplanevip: 203.0.113.3
    ingressvip: 203.0.113.4

admincluster.serviceiprange et admincluster.podiprange

Le cluster d'administrateur doit disposer d'une plage d'adresses IP à utiliser pour les services et d'une plage d'adresses IP à utiliser pour les pods. Ces plages sont spécifiées par les champs admincluster.serviceiprange et admincluster.podiprange. Ces champs sont renseignés lorsque vous exécutez gkectl create-config. Si vous le souhaitez, vous pouvez remplacer les valeurs renseignées par celles de votre choix.

Les plages de services et de pods ne doivent pas se chevaucher. En outre, les plages de services et de pods ne doivent pas chevaucher les adresses IP utilisées pour les nœuds d'un cluster.

Exemple :

admincluster:
  ...
  serviceiprange: 10.96.232.0/24
  podiprange: 192.168.0.0/16

usercluster.ipblockfilepath

Étant donné que vous utilisez des adresses IP statiques, vous devez disposer d'un fichier de configuration d'hôte comme décrit dans la section Configurer des adresses IP statiques. Indiquez le chemin d'accès de votre fichier de configuration d'hôte dans le champ usercluster.ipblockfilepath. Exemple :

usercluster:
  ipblockfilepath: "/my-config-directory/user-hostconfig.yaml"

usercluster.bigip.credentials

Placez une référence, *bigip-credentials, après usercluster.bigip.credentials pour utiliser les mêmes valeurs address, username et password que celles que vous avez spécifiées dans admincluster.bigip.credentials. Exemple :

usercluster:
  ...
  bigip:
    credentials: *bigip-credentials

usercluster.bigip.partition

Vous avez précédemment créé une partition BIG-IP pour votre cluster d'utilisateur. Définissez usercluster.bigip.partition sur le nom de votre partition. Exemple :

usercluster:
  ...
  bigip:
    partition: "my-user-f5-partition"
  ...

usercluster.vips

Définissez la valeur de usercluster.vips.controlplanevip sur l'adresse IP que vous avez choisi de configurer sur l'équilibreur de charge pour le serveur d'API Kubernetes du cluster d'utilisateur. Définissez la valeur de ingressvip sur l'adresse IP que vous avez choisi de configurer dans l'équilibreur de charge pour le service d'entrée du cluster d'utilisateur. Exemple :

usercluster:
  ...
  vips:
    controlplanevip: 203.0.113.6
    ingressvip: 203.0.113.7

usercluster.serviceiprange et usercluster.podiprange

Le cluster d'utilisateur doit disposer d'une plage d'adresses IP à utiliser pour les services et d'une plage d'adresses IP à utiliser pour les pods. Ces plages sont spécifiées par les champs usercluster.serviceiprange et usercluster.podiprange. Ces champs sont renseignés lorsque vous exécutez gkectl create-config. Si vous préférez, vous pouvez remplacer les valeurs renseignées par les valeurs de votre choix.

Les plages de services et de pods ne doivent pas se chevaucher. En outre, les plages de services et de pods ne doivent pas chevaucher les adresses IP utilisées pour les nœuds d'un cluster.

Exemple :

usercluster:
  ...
  serviceiprange: 10.96.233.0/24
  podiprange: 172.16.0.0/12

Désactiver les règles anti-affinité VMware DRS

GKE On-Prem crée automatiquement des règles anti-affinités VMware DRS (Distributed Resource Scheduler) pour les nœuds de votre cluster d'utilisateur, avec pour effet de les répartir sur au moins trois hôtes physiques dans votre centre de données.

Cette fonctionnalité nécessite que votre environnement vSphere remplisse les conditions suivantes :

  • La fonctionnalité VMware DRS est activée. VMware DRS nécessite l'édition de licence vSphere Enterprise Plus. Pour en savoir plus sur l'activation de DRS, consultez l'article Enabling VMware DRS in a cluster (Activer VMware DRS dans un cluster).
  • Le compte utilisateur vSphere indiqué dans le champ vcenter dispose de l'autorisation Host.Inventory.EditCluster.
  • Au moins trois hôtes physiques sont disponibles.

Rappelez-vous que si vous possédez une licence standard vSphere, vous ne pouvez pas activer VMware DRS.

Si vous n'avez pas activé DRS ou si vous n'avez pas au moins trois hôtes sur lesquels les VM vSphere peuvent être planifiées, ajoutez usercluster.antiaffinitygroups.enabled: false à votre fichier de configuration. Exemple :

usercluster:
  ...
  antiaffinitygroups:
    enabled: false

Pour en savoir plus, consultez les notes de version pour la version 1.1.0-gke.6.

lbmode

Définissez lbmode sur "Integrated". Exemple :

lbmode: "Integrated"

stackdriver.clusterlocation

Définissez stackdriver.clusterlocation sur une région Google Cloud dans laquelle vous souhaitez stocker les journaux. Nous vous recommandons de choisir une région à proximité de votre centre de données sur site.

stackdriver.enablevpc

Définissez stackdriver.enablevpc sur true si le réseau de votre cluster est contrôlé par un VPC. Ainsi, toute la télémétrie passe par les adresses IP restreintes de Google.

Champs supplémentaires dans le fichier de configuration

Le fichier de configuration GKE On-Prem comporte plusieurs champs en plus de ceux présentés dans cet article. Par exemple, vous pouvez utiliser le champ manuallbspec afin de configurer GKE On-Prem pour qu'il s'exécute en mode d'équilibrage de charge manuel.

Pour obtenir une description complète des champs du fichier de configuration, consultez les pages Effectuer l'installation via DHCP et Effectuer l'installation à l'aide d'adresses IP statiques.

Valider le fichier de configuration

Après avoir modifié le fichier de configuration, exécutez gkectl check-config pour vérifier que le fichier est valide et peut être utilisé pour l'installation :

gkectl check-config --config config.yaml

Si la commande renvoie des messages FAILURE, 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.

Exécuter gkectl prepare

Exécutez gkectl prepare pour initialiser votre environnement vSphere :

gkectl prepare --config config.yaml --skip-validation-all

Créer les clusters d'administrateur et d'utilisateur

  1. Créez le cluster d'administrateur et le cluster d'utilisateur en exécutant la commande gkectl create cluster.

    gkectl create cluster --config config.yaml --skip-validation-all

    La commande gkectl create cluster crée les fichiers kubeconfig nommés [CLUSTER_NAME]-kubeconfig dans le répertoire actuel, où [CLUSTER_NAME] est le nom que vous avez défini pour cluster. Exemple : MY-CLUSTER-kubeconfig

    La documentation GKE On-Prem utilise les espaces réservés suivants pour faire référence à ces fichiers kubeconfig :

    • Cluster d'administrateur : [ADMIN_CLUSTER_KUBECONFIG]
    • Cluster d'utilisateur : [USER_CLUSTER_KUBECONFIG]
  2. Vérifiez que les clusters sont créés et en cours d'exécution.

    1. Pour le cluster d'administrateur, exécutez la commande suivante :

      kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

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

    2. Pour le cluster d'utilisateur, exécutez la commande suivante :

      kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]

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

      NAME                        STATUS   ROLES    AGE   VERSION
      xxxxxx-1234-ipam-15008527   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-1500852a   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-15008536   Ready    <none>   12m   v1.14.7-gke.24
      

    Conseil : Si vos clusters sont enregistrés, vous pouvez vous connecter à la console Google Cloud pour vérifier qu'ils ont bien été créés.

Passez à la section suivante pour savoir comment déployer une application sur votre cluster d'utilisateur.