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.
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 role | When required | Privilèges requis |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter Cluster | Always |
|
vSphere Datastore | Always |
|
vSphere Port Group | Always |
|
Virtual Machine Folder | Always |
|
vSphere vCenter Datacenter | If the installation program creates the virtual machine folder |
|
1 Les autorisations |
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 object | Type de dossier | Propagate to children | Permissions required |
---|---|---|---|
vSphere vCenter | Always | Pas nécessaire | Listed required privileges |
vSphere vCenter Datacenter | Existing folder | Pas nécessaire |
|
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 |
|
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
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>
où
<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.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
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.
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
où
<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.
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'autorisationcluster-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
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>
.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.
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
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
etinfra
. - 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.
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.
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
etCURRENT
correspondent. Si le jeu de machines de calcul n'est pas disponible, attendez quelques minutes et exécutez à nouveau la commande.