2.10. Création d'un ensemble de machines de calcul sur vSphere


Vous pouvez créer un ensemble de machines de calcul différent pour répondre à un objectif spécifique dans votre cluster OpenShift Container Platform sur VMware vSphere. Par exemple, vous pouvez créer des jeux de machines d'infrastructure et des machines connexes afin de pouvoir déplacer des charges de travail de support vers les nouvelles machines.

Important

Vous ne pouvez utiliser les fonctionnalités avancées de gestion et de mise à l'échelle des machines que dans les clusters où l'API Machine est opérationnelle. Les clusters dont l'infrastructure est fournie par l'utilisateur nécessitent une validation et une configuration supplémentaires pour utiliser l'API Machine.

Les clusters avec le type de plateforme d'infrastructure none ne peuvent pas utiliser l'API Machine. Cette limitation s'applique même si les machines de calcul attachées au cluster sont installées sur une plateforme qui prend en charge cette fonctionnalité. Ce paramètre ne peut pas être modifié après l'installation.

Pour afficher le type de plateforme de votre cluster, exécutez la commande suivante :

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'

2.10.1. Exemple de YAML pour une ressource personnalisée d'un ensemble de machines de calcul sur vSphere

Cet exemple YAML définit un ensemble de machines de calcul qui fonctionne sur VMware vSphere et crée des nœuds étiquetés avec node-role.kubernetes.io/<role>: "".

Dans cet exemple, <infrastructure_id> est l'étiquette d'ID d'infrastructure basée sur l'ID de cluster que vous avez défini lors du provisionnement du cluster, et <role> est l'étiquette de nœud à ajouter.

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  creationTimestamp: null
  labels:
    machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1
  name: <infrastructure_id>-<role> 2
  namespace: openshift-machine-api
spec:
  replicas: 1
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id> 3
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 4
  template:
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> 5
        machine.openshift.io/cluster-api-machine-role: <role> 6
        machine.openshift.io/cluster-api-machine-type: <role> 7
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 8
    spec:
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/<role>: "" 9
      providerSpec:
        value:
          apiVersion: vsphereprovider.openshift.io/v1beta1
          credentialsSecret:
            name: vsphere-cloud-credentials
          diskGiB: 120
          kind: VSphereMachineProviderSpec
          memoryMiB: 8192
          metadata:
            creationTimestamp: null
          network:
            devices:
            - networkName: "<vm_network_name>" 10
          numCPUs: 4
          numCoresPerSocket: 1
          snapshot: ""
          template: <vm_template_name> 11
          userDataSecret:
            name: worker-user-data
          workspace:
            datacenter: <vcenter_datacenter_name> 12
            datastore: <vcenter_datastore_name> 13
            folder: <vcenter_vm_folder_path> 14
            resourcepool: <vsphere_resource_pool> 15
            server: <vcenter_server_ip> 16
1 3 5
Spécifiez l'ID d'infrastructure qui est basé sur l'ID de cluster que vous avez défini lorsque vous avez provisionné le cluster. Si l'OpenShift CLI (oc) est installé, vous pouvez obtenir l'ID d'infrastructure en exécutant la commande suivante :
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
2 4 8
Spécifiez l'ID de l'infrastructure et l'étiquette du nœud.
6 7 9
Spécifiez l'étiquette de nœud à ajouter.
10
Indiquez le réseau VM vSphere sur lequel déployer l'ensemble de machines de calcul. Ce réseau VM doit se trouver là où d'autres machines de calcul résident dans le cluster.
11
Spécifiez le modèle de VM vSphere à utiliser, par exemple user-5ddjd-rhcos.
12
Spécifiez le centre de données vCenter sur lequel déployer l'ensemble de machines de calcul.
13
Spécifiez le Datastore vCenter sur lequel déployer l'ensemble de machines de calcul.
14
Indiquez le chemin d'accès au dossier vSphere VM dans vCenter, par exemple /dc1/vm/user-inst-5ddjd.
15
Spécifiez le pool de ressources vSphere pour vos machines virtuelles.
16
Spécifiez l'IP du serveur vCenter ou le nom de domaine complet.

2.10.2. Privilèges vCenter minimaux requis pour la gestion des ensembles de machines de calcul

Pour gérer les ensembles de machines de calcul dans un cluster OpenShift Container Platform sur vCenter, vous devez utiliser un compte disposant des privilèges nécessaires pour lire, créer et supprimer les ressources requises. L'utilisation d'un compte disposant de privilèges administratifs globaux est le moyen le plus simple d'accéder à toutes les autorisations nécessaires.

Si vous ne pouvez pas utiliser un compte avec des privilèges administratifs globaux, vous devez créer des rôles pour accorder les privilèges minimums requis. Le tableau suivant répertorie les rôles et privilèges vCenter minimaux requis pour créer, mettre à l'échelle et supprimer des ensembles de machines de calcul et pour supprimer des machines dans votre cluster OpenShift Container Platform.

Exemple 2.1. Rôles et privilèges vCenter minimaux requis pour la gestion des ensembles de machines de calcul

vSphere object for roleWhen requiredPrivilèges requis

vSphere vCenter

Always

InventoryService.Tagging.AttachTag
InventoryService.Tagging.CreateCategory
InventoryService.Tagging.CreateTag
InventoryService.Tagging.DeleteCategory
InventoryService.Tagging.DeleteTag
InventoryService.Tagging.EditCategory
InventoryService.Tagging.EditTag
Sessions.ValidateSession
StorageProfile.Update1
StorageProfile.View1

vSphere vCenter Cluster

Always

Resource.AssignVMToPool

vSphere Datastore

Always

Datastore.AllocateSpace
Datastore.Browse

vSphere Port Group

Always

Network.Assign

Virtual Machine Folder

Always

VirtualMachine.Config.AddRemoveDevice
VirtualMachine.Config.AdvancedConfig
VirtualMachine.Config.Annotation
VirtualMachine.Config.CPUCount
VirtualMachine.Config.DiskExtend
VirtualMachine.Config.Memory
VirtualMachine.Config.Settings
VirtualMachine.Interact.PowerOff
VirtualMachine.Interact.PowerOn
VirtualMachine.Inventory.CreateFromExisting
VirtualMachine.Inventory.Delete
VirtualMachine.Provisioning.Clone

vSphere vCenter Datacenter

If the installation program creates the virtual machine folder

Resource.AssignVMToPool
VirtualMachine.Provisioning.DeployTemplate

1 Les autorisations StorageProfile.Update et StorageProfile.View ne sont requises que pour les backends de stockage qui utilisent l'interface de stockage de conteneurs (CSI).

Le tableau suivant détaille les autorisations et les paramètres de propagation requis pour la gestion des ensembles de machines de calcul.

Exemple 2.2. Required permissions and propagation settings

vSphere objectType de dossierPropagate to childrenPermissions required

vSphere vCenter

Always

Pas nécessaire

Listed required privileges

vSphere vCenter Datacenter

Existing folder

Pas nécessaire

ReadOnly permission

Installation program creates the folder

Exigée

Listed required privileges

vSphere vCenter Cluster

Always

Exigée

Listed required privileges

vSphere vCenter Datastore

Always

Pas nécessaire

Listed required privileges

vSphere Switch

Always

Pas nécessaire

ReadOnly permission

vSphere Port Group

Always

Pas nécessaire

Listed required privileges

vSphere vCenter Virtual Machine Folder

Existing folder

Exigée

Listed required privileges

For more information about creating an account with only the required privileges, see vSphere Permissions and User Management Tasks in the vSphere documentation.

2.10.3. Exigences pour les grappes dont l'infrastructure est fournie par l'utilisateur afin d'utiliser des ensembles de machines de calcul

Pour utiliser des ensembles de machines de calcul sur des clusters disposant d'une infrastructure fournie par l'utilisateur, vous devez vous assurer que la configuration de votre cluster prend en charge l'utilisation de l'API Machine.

Obtention de l'identifiant de l'infrastructure

Pour créer des ensembles de machines de calcul, vous devez être en mesure de fournir l'identifiant d'infrastructure de votre cluster.

Procédure

  • Pour obtenir l'identifiant d'infrastructure de votre cluster, exécutez la commande suivante :

    $ oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
Satisfaire aux exigences en matière d'accréditation vSphere

Pour utiliser les ensembles de machines de calcul, l'API Machine doit pouvoir interagir avec vCenter. Les informations d'identification qui autorisent les composants de l'API Machine à interagir avec vCenter doivent exister dans un secret de l'espace de noms openshift-machine-api.

Procédure

  1. Pour déterminer si les informations d'identification requises existent, exécutez la commande suivante :

    $ oc get secret \
      -n openshift-machine-api vsphere-cloud-credentials \
      -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

    Exemple de sortie

    <vcenter-server>.password=<openshift-user-password>
    <vcenter-server>.username=<openshift-user>

    <vcenter-server> est l'adresse IP ou le nom de domaine entièrement qualifié (FQDN) du serveur vCenter et <openshift-user> et <openshift-user-password> sont les informations d'identification de l'administrateur OpenShift Container Platform à utiliser.

  2. Si le secret n'existe pas, créez-le en exécutant la commande suivante :

    $ oc create secret generic vsphere-cloud-credentials \
      -n openshift-machine-api \
      --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password>
Satisfaire aux exigences de configuration d'Ignition

Le provisionnement des machines virtuelles (VM) nécessite une configuration Ignition valide. La configuration Ignition contient l'adresse machine-config-server et un ensemble de confiance système pour obtenir d'autres configurations Ignition auprès de l'opérateur Machine Config.

Par défaut, cette configuration est stockée dans le secret worker-user-data de l'espace de noms machine-api-operator. Les ensembles de machines de calcul font référence au secret pendant le processus de création de la machine.

Procédure

  1. Pour déterminer si le secret requis existe, exécutez la commande suivante :

    $ oc get secret \
      -n openshift-machine-api worker-user-data \
      -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

    Exemple de sortie

    disableTemplating: false
    userData: 1
      {
        "ignition": {
          ...
          },
        ...
      }

    1
    La sortie complète est omise ici, mais devrait avoir ce format.
  2. Si le secret n'existe pas, créez-le en exécutant la commande suivante :

    $ oc create secret generic worker-user-data \
      -n openshift-machine-api \
      --from-file=<installation_directory>/worker.ign

    <installation_directory> est le répertoire qui a été utilisé pour stocker vos ressources d'installation lors de l'installation du cluster.

2.10.4. Création d'un ensemble de machines de calcul

En plus des ensembles de machines de calcul créés par le programme d'installation, vous pouvez créer vos propres ensembles pour gérer dynamiquement les ressources de calcul des machines pour les charges de travail spécifiques de votre choix.

Note

Les clusters installés avec une infrastructure fournie par l'utilisateur ont une pile réseau différente de celle des clusters dont l'infrastructure est fournie par le programme d'installation. En raison de cette différence, la gestion automatique de l'équilibreur de charge n'est pas prise en charge sur les clusters dotés d'une infrastructure fournie par l'utilisateur. Pour ces clusters, un ensemble de machines de calcul ne peut créer que des machines de type worker et infra.

Conditions préalables

  • Déployer un cluster OpenShift Container Platform.
  • Installez le CLI OpenShift (oc).
  • Connectez-vous à oc en tant qu'utilisateur disposant de l'autorisation cluster-admin.
  • Disposer des autorisations nécessaires pour déployer des machines virtuelles dans votre instance vCenter et avoir l'accès requis au magasin de données spécifié.
  • Si votre cluster utilise une infrastructure fournie par l'utilisateur, vous avez satisfait aux exigences spécifiques de l'API Machine pour cette configuration.

Procédure

  1. Créez un nouveau fichier YAML contenant l'échantillon de ressources personnalisées (CR) de l'ensemble de machines de calcul et nommé <file_name>.yaml.

    Veillez à définir les valeurs des paramètres <clusterID> et <role>.

  2. Facultatif : si vous n'êtes pas sûr de la valeur à définir pour un champ spécifique, vous pouvez vérifier un ensemble de machines de calcul existant dans votre cluster.

    1. Pour répertorier les ensembles de machines de calcul de votre cluster, exécutez la commande suivante :

      $ oc get machinesets -n openshift-machine-api

      Exemple de sortie

      NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
      agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1d   0         0                             55m
      agl030519-vplxk-worker-us-east-1e   0         0                             55m
      agl030519-vplxk-worker-us-east-1f   0         0                             55m

    2. Pour afficher les valeurs d'une ressource personnalisée (CR) d'un ensemble de machines de calcul spécifique, exécutez la commande suivante :

      $ oc get machineset <machineset_name> \
        -n openshift-machine-api -o yaml

      Exemple de sortie

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1
        name: <infrastructure_id>-<role> 2
        namespace: openshift-machine-api
      spec:
        replicas: 1
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
        template:
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: <infrastructure_id>
              machine.openshift.io/cluster-api-machine-role: <role>
              machine.openshift.io/cluster-api-machine-type: <role>
              machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
          spec:
            providerSpec: 3
              ...

      1
      L'ID de l'infrastructure du cluster.
      2
      Une étiquette de nœud par défaut.
      Note

      Pour les clusters disposant d'une infrastructure fournie par l'utilisateur, un ensemble de machines de calcul ne peut créer que des machines de type worker et infra.

      3
      Les valeurs de la section <providerSpec> du CR de l'ensemble de machines de calcul sont spécifiques à la plate-forme. Pour plus d'informations sur les paramètres <providerSpec> dans le CR, consultez l'exemple de configuration du CR de l'ensemble de machines de calcul pour votre fournisseur.
    3. Si vous créez un ensemble de machines de calcul pour un cluster qui dispose d'une infrastructure fournie par l'utilisateur, notez les valeurs importantes suivantes :

      Exemple de valeurs vSphere providerSpec

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      ...
      template:
        ...
        spec:
          providerSpec:
            value:
              apiVersion: machine.openshift.io/v1beta1
              credentialsSecret:
                name: vsphere-cloud-credentials 1
              diskGiB: 120
              kind: VSphereMachineProviderSpec
              memoryMiB: 16384
              network:
                devices:
                  - networkName: "<vm_network_name>"
              numCPUs: 4
              numCoresPerSocket: 4
              snapshot: ""
              template: <vm_template_name> 2
              userDataSecret:
                name: worker-user-data 3
              workspace:
                datacenter: <vcenter_datacenter_name>
                datastore: <vcenter_datastore_name>
                folder: <vcenter_vm_folder_path>
                resourcepool: <vsphere_resource_pool>
                server: <vcenter_server_address> 4

      1
      Le nom du secret dans l'espace de noms openshift-machine-api qui contient les informations d'identification vCenter requises.
      2
      Le nom du modèle de VM RHCOS pour votre cluster qui a été créé lors de l'installation.
      3
      Le nom du secret dans l'espace de noms openshift-machine-api qui contient les informations d'identification requises pour la configuration d'Ignition.
      4
      L'adresse IP ou le nom de domaine complet (FQDN) du serveur vCenter.
  3. Créez un CR MachineSet en exécutant la commande suivante :

    oc create -f <nom_du_fichier>.yaml

Vérification

  • Affichez la liste des ensembles de machines de calcul en exécutant la commande suivante :

    $ oc get machineset -n openshift-machine-api

    Exemple de sortie

    NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
    agl030519-vplxk-infra-us-east-1a    1         1         1       1           11m
    agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1d   0         0                             55m
    agl030519-vplxk-worker-us-east-1e   0         0                             55m
    agl030519-vplxk-worker-us-east-1f   0         0                             55m

    Lorsque le nouveau jeu de machines de calcul est disponible, les valeurs DESIRED et CURRENT correspondent. Si le jeu de machines de calcul n'est pas disponible, attendez quelques minutes et exécutez à nouveau la commande.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.