|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Installation de l’environnement PXE
SUSE Virtualization peut être installé automatiquement avec l’environnement PXE.
Nous recommandons d’utiliser iPXE pour effectuer le démarrage réseau. Il dispose de plus de fonctionnalités que le programme de démarrage PXE traditionnel et est probablement disponible dans des cartes NIC modernes. Si le firmware iPXE n’est pas disponible pour votre NIC, les images de firmware iPXE peuvent d’abord être chargées depuis le serveur TFTP.
Pour voir des exemples de scripts iPXE, veuillez visiter Exemples iPXE.
Conditions préalables
Les nœuds doivent avoir au moins 8 GiB de RAM car l’installateur charge le fichier ISO complet dans tmpfs.
|
L’installateur vérifie automatiquement si le matériel répond aux exigences minimales pour une utilisation en production. Si l’une des vérifications échoue, l’installation sera arrêtée. Pour contourner ce comportement, définissez soit l’option de fichier de configuration |
Préparation des serveurs HTTP
Un serveur HTTP est nécessaire pour servir les fichiers de démarrage.
Supposons que l’adresse IP du serveur HTTP NGINX soit 10.100.0.10, et qu’il serve le répertoire /usr/share/nginx/html/ avec le chemin http://10.100.0.10/.
Préparation des fichiers de démarrage
-
Téléchargez les fichiers requis depuis la page Releases.
-
L’ISO :
harvester-<version>-amd64.iso -
Le noyau Linux :
harvester-<version>-vmlinuz-amd64 -
L’initrd :
harvester-<version>-initrd-amd64 -
L’image squashfs rootfs :
harvester-<version>-rootfs-amd64.squashfs
-
-
Servez les fichiers.
Copiez ou déplacez les fichiers téléchargés vers un emplacement approprié afin qu’ils puissent être téléchargés via le serveur HTTP. Par exemple :
sudo mkdir -p /usr/share/nginx/html/harvester/ sudo cp /path/to/harvester-<version>-amd64.iso /usr/share/nginx/html/harvester/ sudo cp /path/to/harvester-<version>-vmlinuz-amd64 /usr/share/nginx/html/harvester/ sudo cp /path/to/harvester-<version>-initrd-amd64 /usr/share/nginx/html/harvester/ sudo cp /path/to/harvester-<version>-rootfs-amd64.squashfs /usr/share/nginx/html/harvester/
Préparation des scripts de démarrage iPXE
Lors d’une installation automatique, il existe deux modes :
-
CREATE: nous installons un nœud pour construire un cluster initial. -
JOIN: nous installons un nœud pour rejoindre un cluster existant.
Vous pouvez attribuer des rôles aux nœuds pour soutenir différents scénarios. Pour plus d’informations, reportez-vous au fichier de configuration.
Mode CRÉATION
|
Risques de sécurité : Le fichier de configuration ci-dessous contient des identifiants qui doivent rester secrets. Veuillez ne pas rendre le fichier de configuration accessible au public. |
Créez un fichier de configuration appelé config-create.yaml pour le mode CREATE. Modifiez les valeurs si nécessaire :
# cat /usr/share/nginx/html/harvester/config-create.yaml
scheme_version: 1
token: token # Replace with a desired token
os:
hostname: node1 # Set a hostname. This can be omitted if DHCP server offers hostnames
ssh_authorized_keys:
- ssh-rsa ... # Replace with your public key
password: p@ssword # Replace with your password
ntp_servers:
- 0.suse.pool.ntp.org
- 1.suse.pool.ntp.org
install:
mode: create
management_interface: # available as of v1.1.0
interfaces:
- name: ens5
default_route: true
method: dhcp
bond_options:
mode: balance-tlb
miimon: 100
device: /dev/sda # The target disk to install
# data_disk: /dev/sdb # It is recommended to use a separate disk to store VM data
iso_url: http://10.100.0.10/harvester/harvester-<version>-amd64.iso
# tty: ttyS1,115200n8 # For machines without a VGA console
vip: 10.100.0.99 # The VIP to access the UI. Make sure the IP is free to use
vip_mode: static # Or dhcp, check configuration file for more information
# vip_hw_addr: 52:54:00:ec:0e:0b # Leave empty when vip_mode is static
Pour les machines qui doivent être installées en utilisant le mode CREATE, le script iPXE suivant démarre le noyau Linux avec la configuration ci-dessus :
#!ipxe kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml initrd harvester-<version>-initrd boot
Cela suppose que le script iPXE est stocké dans /usr/share/nginx/html/harvester/ipxe-create.
|
Si vous avez plusieurs interfaces réseau, vous pouvez utiliser le paramètre Utilisez le paramètre |
Mode d’association
|
Risques de sécurité : Le fichier de configuration ci-dessous contient des identifiants qui doivent rester secrets. Veuillez ne pas rendre le fichier de configuration accessible au public. |
Créez un fichier de configuration appelé config-join.yaml pour le mode JOIN. Modifiez les valeurs si nécessaire :
# cat /usr/share/nginx/html/harvester/config-join.yaml
scheme_version: 1
server_url: https://10.100.0.99:443 # Should be the VIP set up in "CREATE" config
token: token
os:
hostname: node2
ssh_authorized_keys:
- ssh-rsa ... # Replace with your public key
password: p@ssword # Replace with your password
dns_nameservers:
- 1.1.1.1
- 8.8.8.8
install:
mode: join
management_interface: # available as of v1.1.0
interfaces:
- name: ens5
default_route: true
method: dhcp
bond_options:
mode: balance-tlb
miimon: 100
device: /dev/sda # The target disk to install
# data_disk: /dev/sdb # It is recommended to use a separate disk to store VM data
iso_url: http://10.100.0.10/harvester/harvester-<version>-amd64.iso
# tty: ttyS1,115200n8 # For machines without a VGA console
Notez que le mode est join et que le server_url doit être fourni.
Pour les machines qui doivent être installées en mode JOIN, le script iPXE suivant démarre le noyau Linux avec la configuration ci-dessus :
#!ipxe kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-join.yaml initrd harvester-<version>-initrd boot
Cela suppose que le script iPXE est stocké dans /usr/share/nginx/html/harvester/ipxe-join.
Configuration du serveur DHCP
|
Dans le scénario d’installation PXE, vous devez ajouter l’option routeurs ( Dans le scénario d’installation ISO, lorsque l’interface réseau de gestion est en mode DHCP, vous devez également ajouter l’option routeurs ( Par exemple : Harvester Host:~ # ip route
default via 192.168.122.1 dev mgmt-br proto dhcp
Pour plus d’informations, voir Configuration des options ISC DHCPv4. |
Voici un exemple de la façon de configurer le serveur DHCP ISC pour offrir des scripts iPXE :
option architecture-type code 93 = unsigned integer 16;
subnet 10.100.0.0 netmask 255.255.255.0 {
option routers 10.100.0.10;
option domain-name-servers 192.168.2.1;
range 10.100.0.100 10.100.0.253;
}
group {
# create group
if exists user-class and option user-class = "iPXE" {
# iPXE Boot
if option architecture-type = 00:07 {
filename "http://10.100.0.10/harvester/ipxe-create-efi";
} else {
filename "http://10.100.0.10/harvester/ipxe-create";
}
} else {
# PXE Boot
if option architecture-type = 00:07 {
# UEFI
filename "ipxe.efi";
} else {
# Non-UEFI
filename "undionly.kpxe";
}
}
host node1 { hardware ethernet 52:54:00:6b:13:e2; }
}
group {
# join group
if exists user-class and option user-class = "iPXE" {
# iPXE Boot
if option architecture-type = 00:07 {
filename "http://10.100.0.10/harvester/ipxe-join-efi";
} else {
filename "http://10.100.0.10/harvester/ipxe-join";
}
} else {
# PXE Boot
if option architecture-type = 00:07 {
# UEFI
filename "ipxe.efi";
} else {
# Non-UEFI
filename "undionly.kpxe";
}
}
host node2 { hardware ethernet 52:54:00:69:d5:92; }
}
Le fichier de configuration déclare un sous-réseau et deux groupes. Le premier groupe est destiné aux hôtes qui démarrent en mode CREATE et l’autre est pour le mode JOIN. Par défaut, le chemin iPXE est choisi, mais s’il détecte un client PXE, il propose l’image iPXE en fonction de l’architecture du client. Veuillez préparer ces images et un serveur TFTP d’abord.
Le Consortium des systèmes Internet (ISC) a annoncé la fin du service pour ISC DHCP en 2022. Les utilisateurs d’ISC DHCP sont encouragés à migrer vers le Kea DHCP, plus moderne et riche en fonctionnalités, que l’ISC a conçu pour des environnements réseau plus modernes. Si vous utilisez déjà le serveur Kea DHCPv4, consultez l’exemple de configuration suivant. Pour plus d’informations, voir Configuration de Kea DHCPv4.
"client-classes": [
{
"name": "iPXE UEFI/CREATE",
"test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
"boot-file-name": "http://10.100.0.10/harvester/ipxe-create-efi",
"only-if-required": true
},
{
"name": "iPXE non-UEFI/CREATE",
"test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and not option[client-system].hex == 0x0007",
"boot-file-name": "http://10.100.0.10/harvester/ipxe-create",
"only-if-required": true
},
{
"name": "iPXE UEFI/JOIN",
"test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
"boot-file-name": "http://10.100.0.10/harvester/ipxe-join-efi",
"only-if-required": true
},
{
"name": "iPXE non-UEFI/JOIN",
"test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and not option[client-system].hex == 0x0007",
"boot-file-name": "http://10.100.0.10/harvester/ipxe-join",
"only-if-required": true
},
{
"name": "PXE UEFI",
"test": "option[user-class].exists and not substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
"next-server": "10.100.0.20",
"boot-file-name": "ipxe.efi"
},
{
"name": "PXE non-UEFI",
"test": "option[user-class].exists and not substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
"next-server": "10.100.0.20",
"boot-file-name": "undionly.kpxe"
}
]
"subnet4": [
{
"subnet": "10.100.0.0/24",
"pools": [
{
"pool": "10.100.0.100 - 10.100.0.199",
"require-client-classes" : [ "iPXE UEFI/CREATE", "iPXE non-UEFI/CREATE" ]
}.
{
"pool": "10.100.0.200 - 10.100.0.253",
"require-client-classes" : [ "iPXE UEFI/JOIN", "iPXE non-UEFI/JOIN" ]
}
],
"option-data": [
{
"name": "routers",
"data": "10.100.0.10"
}
],
"reservations": [
// assign ip address to the host for booting in CREATE mode
{
"hw-address": "52:54:00:6b:13:e2",
"ip-address": "10.100.0.101"
},
// assign ip address to the host for booting in JOIN mode
{
"hw-address": "52:54:00:69:d5:92",
"ip-address": "10.100.0.201"
}
]
}
]
Fichier de configuration
Pour plus d’informations, reportez-vous au fichier de configuration.
Par défaut, le premier nœud sera le nœud de gestion du cluster. Lorsque trois nœuds sont présents, les deux autres nœuds ajoutés en premier sont automatiquement promus en nœuds de gestion pour former un cluster HA.
Si vous souhaitez promouvoir des nœuds de gestion provenant de différentes zones, vous pouvez ajouter l’étiquette de nœud topology.kubernetes.io/zone dans la configuration os.labels. Dans ce cas, au moins trois zones différentes sont requises.
Les utilisateurs peuvent également fournir une configuration via des paramètres du noyau Linux. Par exemple, pour spécifier le mode d’installation CREATE, les utilisateurs peuvent passer le paramètre de kernel harvester.install.mode=create lors du démarrage. Les valeurs passées par les paramètres de kernel ont une priorité plus élevée que les valeurs spécifiées dans le fichier de configuration.
Support du démarrage HTTP UEFI
Le firmware UEFI prend en charge le chargement d’une image de démarrage depuis un serveur HTTP. Cette section démontre comment utiliser le démarrage HTTP UEFI pour charger le programme iPXE et effectuer une installation automatique.
Servir le programme iPXE
Téléchargez le programme UEFI iPXE depuis http://boot.ipxe.org/ipxe.efi et assurez-vous que ipxe.efi peut être téléchargé depuis le serveur HTTP. Par exemple :
cd /usr/share/nginx/html/harvester/
wget http://boot.ipxe.org/ipxe.efi
Le fichier peut maintenant être téléchargé depuis http://10.100.0.10/harvester/ipxe.efi localement.
Configuration du serveur DHCP
Si l’utilisateur prévoit d’utiliser la fonctionnalité de démarrage HTTP UEFI en obtenant d’abord une adresse IP dynamique, le serveur DHCP doit fournir l’URL du programme iPXE lorsqu’il voit une telle demande. Voici un exemple de groupe de serveur ISC DHCP mis à jour :
group {
# create group
if exists user-class and option user-class = "iPXE" {
# iPXE Boot
if option architecture-type = 00:07 {
filename "http://10.100.0.10/harvester/ipxe-create-efi";
} else {
filename "http://10.100.0.10/harvester/ipxe-create";
}
} elsif substring (option vendor-class-identifier, 0, 10) = "HTTPClient" {
# UEFI HTTP Boot
option vendor-class-identifier "HTTPClient";
filename "http://10.100.0.10/harvester/ipxe.efi";
} else {
# PXE Boot
if option architecture-type = 00:07 {
# UEFI
filename "ipxe.efi";
} else {
# Non-UEFI
filename "undionly.kpxe";
}
}
host node1 { hardware ethernet 52:54:00:6b:13:e2; }
}
La déclaration elsif substring est nouvelle et elle offre http://10.100.0.10/harvester/ipxe.efi lorsqu’elle voit une demande DHCP de démarrage HTTP UEFI. Après que le client ait récupéré le programme iPXE et l’ait exécuté, le programme iPXE enverra à nouveau une demande DHCP et chargera le script iPXE depuis l’URL http://10.100.0.10/harvester/ipxe-create-efi.
Si vous souhaitez activer le démarrage HTTP UEFI sur le serveur Kea DHCPv4, vous devez ajouter un nouveau client-class à la fin du client-classes.
Exemple :
{
"name": "HTTP",
"test": "substring(option[vendor-class-identifier].hex,0,10) == 'HTTPClient'",
"option-data": [
{
"name": "vendor-class-identifier",
"data": "HTTPClient"
}
],
"boot-file-name": "http://10.100.0.10/harvester/ipxe.efi"
}
Le script iPXE pour le démarrage UEFI
Il est obligatoire de spécifier l’image initrd pour le démarrage UEFI dans les paramètres de kernel. Voici une version mise à jour du script iPXE pour le mode CREATE.
#!ipxe kernel harvester-<version>-vmlinuz initrd=harvester-<version>-initrd ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml initrd harvester-<version>-initrd boot
Le paramètre initrd=harvester-<version>-initrd est requis.
Démarrage réseau VLAN tagué
Pour effectuer un démarrage PXE sur un réseau VLAN tagué, les hôtes SUSE Virtualization doivent être configurés avec les paramètres BIOS/UEFI suivants :
-
L’ID VLAN est défini sur l’identité du réseau.
-
Le protocole de démarrage est défini sur
PXE. -
Le DHCP est activé.
|
Un démarrage réseau réussi peut nécessiter des modifications de configuration supplémentaires en fonction des spécifications de l’hôte. La méthode pour effectuer ces modifications peut également varier. Par exemple, sur un serveur HPE ProLiant DL360 Gen9, vous ne pouvez changer le protocole de démarrage et l’ID VLAN que via le firmware de la NIC. Pour plus d’informations, consultez la documentation de votre serveur. |
Pour garantir que l’interface réseau correcte est utilisée au démarrage, mettez à jour la commande iPXE kernel avec les paramètres dracut suivants :
-
BOOTIF=<mac_address>: Utilise l’interface réseau nommée<interface_name> -
ifname=<interface_name>:<mac_address>: Attribue le nom<interface_name>à l’interface réseau avec l’adresse<mac_address> -
vlan=<vlan_id>:<interface_name>: Configure le périphérique VLAN nommé<vlan_id>sur<interface_name>
Exemple de script iPXE :
#!ipxe
kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml BOOTIF=<mac_address> ifname=<interface_name>:<mac_address> vlan=<vlan_id>:<interface_name>
initrd harvester-<version>-initrd
boot
Paramètres du noyau Linux utiles
En plus de la configuration, vous pouvez également spécifier d’autres paramètres du noyau Linux qui sont utiles dans différents scénarios. Voir aussi dracut.cmdline(7).
ip=dhcp
Si vous avez plusieurs interfaces réseau, vous pouvez ajouter le paramètre ip=dhcp pour obtenir une adresse IP du serveur DHCP à partir de toutes les interfaces.
rd.net.dhcp.retry=<cnt>
Le fait de ne pas obtenir d’adresse IP du serveur DHCP entraînerait un échec du démarrage iPXE. Vous pouvez ajouter le paramètre rd.net.dhcp.retry=<cnt> pour réessayer la demande DHCP pendant <cnt> fois.
harvester.install.skipchecks=true
L’installation est arrêtée si les vérifications matérielles échouent (car les exigences minimales pour une utilisation en production ne sont pas satisfaites). Pour remplacer ce comportement, définissez le paramètre de kernel harvester.install.skipchecks=true. Lorsqu’il est réglé sur true, les messages d’avertissement sont toujours enregistrés dans /var/log/console.log, mais l’installation se poursuit même si les exigences matérielles pour une utilisation en production ne sont pas satisfaites.
harvester.install.with_net_images=true
L’installateur ne précharge pas les images pendant l’installation et récupère plutôt toutes les images nécessaires sur Internet après que l’installation soit terminée. L’utilisation de ce paramètre n’est pas recommandée dans la plupart des cas. Pour plus d’informations, voir Net Install ISO.