1.4. Déplacer etcd sur un autre disque
Vous pouvez déplacer etcd d'un disque partagé vers un disque séparé afin d'éviter ou de résoudre les problèmes de performances.
Conditions préalables
-
L'adresse
MachineConfigPooldoit correspondre à l'adressemetadata.labels[machineconfiguration.openshift.io/role]. Cela s'applique à un contrôleur, à un travailleur ou à un pool personnalisé. -
Le périphérique de stockage auxiliaire du nœud, tel que
/dev/sdb, doit correspondre à sdb. Modifiez cette référence à tous les endroits du fichier.
Cette procédure ne permet pas de déplacer des parties du système de fichiers racine, telles que /var/, vers un autre disque ou une autre partition sur un nœud installé.
L'opérateur de configuration de machine (MCO) est chargé de monter un disque secondaire pour un stockage de conteneur OpenShift Container Platform 4.12.
Procédez comme suit pour déplacer etcd vers un autre périphérique :
Procédure
Créez un fichier YAML
machineconfignomméetcd-mc.ymlet ajoutez les informations suivantes :apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 98-var-lib-etcd spec: config: ignition: version: 3.2.0 systemd: units: - contents: | [Unit] Description=Make File System on /dev/sdb DefaultDependencies=no BindsTo=dev-sdb.device After=dev-sdb.device var.mount Before=systemd-fsck@dev-sdb.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/lib/systemd/systemd-makefs xfs /dev/sdb TimeoutSec=0 [Install] WantedBy=var-lib-containers.mount enabled: true name: systemd-mkfs@dev-sdb.service - contents: | [Unit] Description=Mount /dev/sdb to /var/lib/etcd Before=local-fs.target Requires=systemd-mkfs@dev-sdb.service After=systemd-mkfs@dev-sdb.service var.mount [Mount] What=/dev/sdb Where=/var/lib/etcd Type=xfs Options=defaults,prjquota [Install] WantedBy=local-fs.target enabled: true name: var-lib-etcd.mount - contents: | [Unit] Description=Sync etcd data if new mount is empty DefaultDependencies=no After=var-lib-etcd.mount var.mount Before=crio.service [Service] Type=oneshot RemainAfterExit=yes ExecCondition=/usr/bin/test ! -d /var/lib/etcd/member ExecStart=/usr/sbin/setenforce 0 ExecStart=/bin/rsync -ar /sysroot/ostree/deploy/rhcos/var/lib/etcd/ /var/lib/etcd/ ExecStart=/usr/sbin/setenforce 1 TimeoutSec=0 [Install] WantedBy=multi-user.target graphical.target enabled: true name: sync-var-lib-etcd-to-etcd.service - contents: | [Unit] Description=Restore recursive SELinux security contexts DefaultDependencies=no After=var-lib-etcd.mount Before=crio.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/restorecon -R /var/lib/etcd/ TimeoutSec=0 [Install] WantedBy=multi-user.target graphical.target enabled: true name: restorecon-var-lib-etcd.serviceCréez la configuration de la machine en entrant les commandes suivantes :
$ oc login -u ${ADMIN} -p ${ADMINPASSWORD} ${API} ... output omitted ...$ oc create -f etcd-mc.yml machineconfig.machineconfiguration.openshift.io/98-var-lib-etcd created$ oc login -u ${ADMIN} -p ${ADMINPASSWORD} ${API} [... output omitted ...]$ oc create -f etcd-mc.yml machineconfig.machineconfiguration.openshift.io/98-var-lib-etcd createdLes nœuds sont mis à jour et redémarrés. Une fois le redémarrage terminé, les événements suivants se produisent :
- Un système de fichiers XFS est créé sur le disque spécifié.
-
Le disque est monté sur
/var/lib/etc. -
Le contenu de
/sysroot/ostree/deploy/rhcos/var/lib/etcdest synchronisé avec/var/lib/etcd. -
Une restauration des étiquettes de
SELinuxest forcée pour/var/lib/etcd. - L'ancien contenu n'est pas supprimé.
Une fois que les nœuds sont sur un disque séparé, mettez à jour le fichier de configuration de la machine,
etcd-mc.ymlavec les informations suivantes :apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 98-var-lib-etcd spec: config: ignition: version: 3.2.0 systemd: units: - contents: | [Unit] Description=Mount /dev/sdb to /var/lib/etcd Before=local-fs.target Requires=systemd-mkfs@dev-sdb.service After=systemd-mkfs@dev-sdb.service var.mount [Mount] What=/dev/sdb Where=/var/lib/etcd Type=xfs Options=defaults,prjquota [Install] WantedBy=local-fs.target enabled: true name: var-lib-etcd.mountAppliquez la version modifiée qui supprime la logique de création et de synchronisation du périphérique en entrant la commande suivante :
$ oc replace -f etcd-mc.ymlL'étape précédente empêche les nœuds de redémarrer.