7.2. Ajouter des machines de calcul RHCOS à un cluster OpenShift Container Platform
Vous pouvez ajouter des machines de calcul Red Hat Enterprise Linux CoreOS (RHCOS) à votre cluster OpenShift Container Platform sur du métal nu.
Avant d'ajouter des machines de calcul à un cluster installé sur une infrastructure bare metal, vous devez créer des machines RHCOS à utiliser. Vous pouvez utiliser une image ISO ou un démarrage PXE en réseau pour créer les machines.
7.2.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Vous avez installé un cluster sur du métal nu.
- Vous disposez des supports d'installation et des images Red Hat Enterprise Linux CoreOS (RHCOS) que vous avez utilisés pour créer votre cluster. Si vous ne disposez pas de ces fichiers, vous devez les obtenir en suivant les instructions de la procédure d'installation.
7.2.2. Création d'autres machines RHCOS à l'aide d'une image ISO Copier lienLien copié sur presse-papiers!
Vous pouvez créer davantage de machines de calcul Red Hat Enterprise Linux CoreOS (RHCOS) pour votre cluster bare metal en utilisant une image ISO pour créer les machines.
Conditions préalables
- Obtenez l'URL du fichier de configuration Ignition pour les machines de calcul de votre cluster. Vous avez téléchargé ce fichier sur votre serveur HTTP lors de l'installation.
Procédure
Utilisez le fichier ISO pour installer RHCOS sur d'autres machines de calcul. Utilisez la même méthode que lorsque vous avez créé des machines avant d'installer le cluster :
- Burn the ISO image to a disk and boot it directly.
- Utiliser la redirection ISO avec une interface LOM.
Démarrer l'image ISO RHCOS sans spécifier d'options ni interrompre la séquence de démarrage en direct. Attendez que le programme d'installation démarre à l'invite de l'interpréteur de commandes dans l'environnement réel RHCOS.
NoteVous pouvez interrompre le processus de démarrage de l'installation RHCOS pour ajouter des arguments au noyau. Cependant, pour cette procédure ISO, vous devez utiliser la commande
coreos-installer
comme indiqué dans les étapes suivantes, au lieu d'ajouter des arguments au noyau.Run the
coreos-installer
command and specify the options that meet your installation requirements. At a minimum, you must specify the URL that points to the Ignition config file for the node type, and the device that you are installing to:sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest>
$ sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest>
1 2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- You must run the
coreos-installer
command by usingsudo
, because thecore
user does not have the required root privileges to perform the installation. - 2
- The
--ignition-hash
option is required when the Ignition config file is obtained through an HTTP URL to validate the authenticity of the Ignition config file on the cluster node.<digest>
is the Ignition config file SHA512 digest obtained in a preceding step.
NoteIf you want to provide your Ignition config files through an HTTPS server that uses TLS, you can add the internal certificate authority (CA) to the system trust store before running
coreos-installer
.The following example initializes a bootstrap node installation to the
/dev/sda
device. The Ignition config file for the bootstrap node is obtained from an HTTP web server with the IP address 192.168.1.2:sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b
$ sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Monitor the progress of the RHCOS installation on the console of the machine.
ImportantAssurez-vous que l'installation est réussie sur chaque nœud avant de commencer l'installation d'OpenShift Container Platform. L'observation du processus d'installation peut également aider à déterminer la cause des problèmes d'installation du RHCOS qui pourraient survenir.
- Continue to create more compute machines for your cluster.
7.2.3. Création d'autres machines RHCOS par démarrage PXE ou iPXE Copier lienLien copié sur presse-papiers!
Vous pouvez créer davantage de machines de calcul Red Hat Enterprise Linux CoreOS (RHCOS) pour votre cluster bare metal en utilisant le démarrage PXE ou iPXE.
Conditions préalables
- Obtenez l'URL du fichier de configuration Ignition pour les machines de calcul de votre cluster. Vous avez téléchargé ce fichier sur votre serveur HTTP lors de l'installation.
-
Obtenez les URL de l'image ISO RHCOS, du BIOS métallique compressé, de
kernel
et deinitramfs
que vous avez téléchargés sur votre serveur HTTP lors de l'installation du cluster. - Vous avez accès à l'infrastructure de démarrage PXE que vous avez utilisée pour créer les machines de votre cluster OpenShift Container Platform lors de l'installation. Les machines doivent démarrer à partir de leurs disques locaux après l'installation de RHCOS.
-
Si vous utilisez l'UEFI, vous avez accès au fichier
grub.conf
que vous avez modifié lors de l'installation d'OpenShift Container Platform.
Procédure
Confirmez que votre installation PXE ou iPXE pour les images RHCOS est correcte.
Pour PXE :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez l'emplacement du fichier live
kernel
que vous avez téléchargé sur votre serveur HTTP. - 2
- Indiquez l'emplacement des fichiers RHCOS que vous avez téléchargés sur votre serveur HTTP. La valeur du paramètre
initrd
correspond à l'emplacement du fichierinitramfs
, la valeur du paramètrecoreos.inst.ignition_url
correspond à l'emplacement du fichier de configuration Ignition et la valeur du paramètrecoreos.live.rootfs_url
correspond à l'emplacement du fichierrootfs
. Les paramètrescoreos.inst.ignition_url
etcoreos.live.rootfs_url
ne prennent en charge que HTTP et HTTPS.
Cette configuration ne permet pas l'accès à la console série sur les machines dotées d'une console graphique. Pour configurer une console différente, ajoutez un ou plusieurs arguments console=
à la ligne APPEND
. Par exemple, ajoutez console=tty0 console=ttyS0
pour définir le premier port série du PC comme console primaire et la console graphique comme console secondaire. Pour plus d'informations, reportez-vous à Comment configurer un terminal série et/ou une console dans Red Hat Enterprise Linux ?
Pour iPXE :
kernel http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> initrd=main coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/worker.ign coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img initrd --name main http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img
kernel http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> initrd=main coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/worker.ign coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img
1 initrd --name main http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifiez l'emplacement des fichiers RHCOS que vous avez téléchargés sur votre serveur HTTP. La valeur du paramètre
kernel
correspond à l'emplacement du fichierkernel
, l'argumentinitrd=main
est nécessaire pour le démarrage sur les systèmes UEFI, la valeur du paramètrecoreos.inst.ignition_url
correspond à l'emplacement du fichier de configuration Ignition worker et la valeur du paramètrecoreos.live.rootfs_url
correspond à l'emplacement du fichierrootfs
live. Les paramètrescoreos.inst.ignition_url
etcoreos.live.rootfs_url
ne prennent en charge que les protocoles HTTP et HTTPS. - 2
- Specify the location of the
initramfs
file that you uploaded to your HTTP server.
Cette configuration ne permet pas l'accès à la console série sur les machines dotées d'une console graphique. Pour configurer une console différente, ajoutez un ou plusieurs arguments console=
à la ligne kernel
. Par exemple, ajoutez console=tty0 console=ttyS0
pour définir le premier port série du PC comme console primaire et la console graphique comme console secondaire. Pour plus d'informations, reportez-vous à Comment configurer un terminal série et/ou une console dans Red Hat Enterprise Linux ?
- Utilisez l'infrastructure PXE ou iPXE pour créer les machines de calcul nécessaires à votre cluster.
7.2.4. Approving the certificate signing requests for your machines Copier lienLien copié sur presse-papiers!
When you add machines to a cluster, two pending certificate signing requests (CSRs) are generated for each machine that you added. You must confirm that these CSRs are approved or, if necessary, approve them yourself. The client requests must be approved first, followed by the server requests.
Conditions préalables
- You added machines to your cluster.
Procédure
Confirm that the cluster recognizes the machines:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.25.0 master-1 Ready master 63m v1.25.0 master-2 Ready master 64m v1.25.0
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.25.0 master-1 Ready master 63m v1.25.0 master-2 Ready master 64m v1.25.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output lists all of the machines that you created.
NoteThe preceding output might not include the compute nodes, also known as worker nodes, until some CSRs are approved.
Review the pending CSRs and ensure that you see the client requests with the
Pending
orApproved
status for each machine that you added to the cluster:oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME AGE REQUESTOR CONDITION csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending ...
NAME AGE REQUESTOR CONDITION csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In this example, two machines are joining the cluster. You might see more approved CSRs in the list.
If the CSRs were not approved, after all of the pending CSRs for the machines you added are in
Pending
status, approve the CSRs for your cluster machines:NoteBecause the CSRs rotate automatically, approve your CSRs within an hour of adding the machines to the cluster. If you do not approve them within an hour, the certificates will rotate, and more than two certificates will be present for each node. You must approve all of these certificates. After the client CSR is approved, the Kubelet creates a secondary CSR for the serving certificate, which requires manual approval. Then, subsequent serving certificate renewal requests are automatically approved by the
machine-approver
if the Kubelet requests a new certificate with identical parameters.NoteFor clusters running on platforms that are not machine API enabled, such as bare metal and other user-provisioned infrastructure, you must implement a method of automatically approving the kubelet serving certificate requests (CSRs). If a request is not approved, then the
oc exec
,oc rsh
, andoc logs
commands cannot succeed, because a serving certificate is required when the API server connects to the kubelet. Any operation that contacts the Kubelet endpoint requires this certificate approval to be in place. The method must watch for new CSRs, confirm that the CSR was submitted by thenode-bootstrapper
service account in thesystem:node
orsystem:admin
groups, and confirm the identity of the node.To approve them individually, run the following command for each valid CSR:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>
est le nom d'un CSR figurant dans la liste des CSR actuels.
To approve all pending CSRs, run the following command:
oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSome Operators might not become available until some CSRs are approved.
Now that your client requests are approved, you must review the server requests for each machine that you added to the cluster:
oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ...
NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the remaining CSRs are not approved, and are in the
Pending
status, approve the CSRs for your cluster machines:To approve them individually, run the following command for each valid CSR:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>
est le nom d'un CSR figurant dans la liste des CSR actuels.
To approve all pending CSRs, run the following command:
oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
After all client and server CSRs have been approved, the machines have the
Ready
status. Verify this by running the following command:oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIt can take a few minutes after approval of the server CSRs for the machines to transition to the
Ready
status.
Informations complémentaires
- For more information on CSRs, see Certificate Signing Requests.
7.2.5. Ajout d'un nouveau nœud de travail RHCOS avec une partition personnalisée /var dans AWS Copier lienLien copié sur presse-papiers!
OpenShift Container Platform prend en charge le partitionnement des périphériques pendant l'installation en utilisant les configurations de machine qui sont traitées pendant le bootstrap. Cependant, si vous utilisez le partitionnement /var
, le nom du périphérique doit être déterminé lors de l'installation et ne peut pas être modifié. Vous ne pouvez pas ajouter différents types d'instance en tant que nœuds s'ils ont un schéma de dénomination de périphérique différent. Par exemple, si vous avez configuré la partition /var
avec le nom de périphérique AWS par défaut pour les instances m4.large
, dev/xvdb
, vous ne pouvez pas ajouter directement une instance AWS m5.large
, car les instances m5.large
utilisent un périphérique /dev/nvme1n1
par défaut. Le périphérique risque de ne pas être partitionné en raison de la différence de schéma de dénomination.
La procédure de cette section montre comment ajouter un nouveau nœud de calcul Red Hat Enterprise Linux CoreOS (RHCOS) avec une instance qui utilise un nom de périphérique différent de celui qui a été configuré lors de l'installation. Vous créez un secret de données utilisateur personnalisé et configurez un nouvel ensemble de machines de calcul. Ces étapes sont spécifiques à un cluster AWS. Les principes s'appliquent également à d'autres déploiements dans le nuage. Cependant, le schéma de dénomination des périphériques est différent pour d'autres déploiements et doit être déterminé au cas par cas.
Procédure
Sur une ligne de commande, passez à l'espace de noms
openshift-machine-api
:oc project openshift-machine-api
$ oc project openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un nouveau secret à partir du secret
worker-user-data
:Exporter la section
userData
du secret dans un fichier texte :oc get secret worker-user-data --template='{{index .data.userData | base64decode}}' | jq > userData.txt
$ oc get secret worker-user-data --template='{{index .data.userData | base64decode}}' | jq > userData.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Modifiez le fichier texte pour ajouter les strophes
storage
,filesystems
, etsystemd
pour les partitions que vous souhaitez utiliser pour le nouveau nœud. Vous pouvez spécifier tous les paramètres de configuration d'Ignition si nécessaire.NoteNe modifiez pas les valeurs de la strophe
ignition
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Spécifie un chemin d'accès absolu au périphérique de bloc AWS.
- 2
- Spécifie la taille de la partition de données en méga-octets.
- 3
- Spécifie le début de la partition en Mebibytes. Lors de l'ajout d'une partition de données au disque de démarrage, il est recommandé d'utiliser une valeur minimale de 25 000 Mo (Mebibytes). Le système de fichiers racine est automatiquement redimensionné pour remplir tout l'espace disponible jusqu'au décalage spécifié. Si aucune valeur n'est spécifiée, ou si la valeur spécifiée est inférieure au minimum recommandé, le système de fichiers racine résultant sera trop petit, et les réinstallations futures de RHCOS risquent d'écraser le début de la partition de données.
- 4
- Spécifie un chemin d'accès absolu à la partition
/var
. - 5
- Spécifie le format du système de fichiers.
- 6
- Spécifie le point de montage du système de fichiers lorsque Ignition est en cours d'exécution, par rapport à l'endroit où le système de fichiers racine sera monté. Ce n'est pas nécessairement la même chose que l'endroit où il devrait être monté dans la racine réelle, mais il est encouragé de le faire.
- 7
- Définit une unité de montage systemd qui monte le périphérique
/dev/disk/by-partlabel/var
sur la partition/var
.
Extraire la section
disableTemplating
du secretwork-user-data
dans un fichier texte :oc get secret worker-user-data --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
$ oc get secret worker-user-data --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le nouveau fichier de données utilisateur secrètes à partir des deux fichiers texte. Ce fichier secret transmet au nœud nouvellement créé les informations supplémentaires relatives à la partition du nœud contenues dans le fichier
userData.txt
.oc create secret generic worker-user-data-x5 --from-file=userData=userData.txt --from-file=disableTemplating=disableTemplating.txt
$ oc create secret generic worker-user-data-x5 --from-file=userData=userData.txt --from-file=disableTemplating=disableTemplating.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez un nouvel ensemble de machines de calcul pour le nouveau nœud :
Créez un nouveau fichier YAML d'ensemble de machine de calcul, similaire au suivant, qui est configuré pour AWS. Ajoutez les partitions requises et le secret des données de l'utilisateur nouvellement créé :
AstuceUtilisez un ensemble de machines de calcul existant comme modèle et modifiez les paramètres selon les besoins pour le nouveau nœud.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer l'ensemble de machines de calcul :
oc create -f <nom-de-fichier>.yaml
oc create -f <nom-de-fichier>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les machines peuvent prendre quelques instants avant d'être disponibles.
Vérifiez que la nouvelle partition et les nouveaux nœuds sont créés :
Vérifiez que l'ensemble de machines de calcul est créé :
oc get machineset
$ oc get machineset
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME DESIRED CURRENT READY AVAILABLE AGE ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1a 1 1 1 1 124m ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1b 2 2 2 2 124m worker-us-east-2-nvme1n1 1 1 1 1 2m35s
NAME DESIRED CURRENT READY AVAILABLE AGE ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1a 1 1 1 1 124m ci-ln-2675bt2-76ef8-bdgsc-worker-us-east-1b 2 2 2 2 124m worker-us-east-2-nvme1n1 1 1 1 1 2m35s
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il s'agit du nouvel ensemble de machines de calcul.
Vérifiez que le nouveau nœud est créé :
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il s'agit d'un nouveau nœud.
Vérifiez que la partition personnalisée
/var
est créée sur le nouveau nœud :oc debug node/<node-name> -- chroot /host lsblk
$ oc debug node/<node-name> -- chroot /host lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc debug node/ip-10-0-217-135.ec2.internal -- chroot /host lsblk
$ oc debug node/ip-10-0-217-135.ec2.internal -- chroot /host lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le périphérique
nvme1n1
est monté sur la partition/var
.