9.5. Options du contrôleur de migration
Vous pouvez modifier les limites du plan de migration, activer le redimensionnement de volumes persistants ou activer les clients Kubernetes en cache dans la ressource personnalisée (CR) MigrationController
pour les migrations à grande échelle et pour améliorer les performances.
9.5.1. Augmentation des limites pour les migrations à grande échelle
Vous pouvez augmenter les limites des objets de migration et des ressources du conteneur pour les migrations à grande échelle avec Migration Toolkit for Containers (MTC).
Vous devez tester ces modifications avant d’effectuer une migration dans un environnement de production.
Procédure
Modifiez le manifeste de la ressource personnalisée (CR)
MigrationController
:oc edit migrationcontroller -n openshift-migration
$ oc edit migrationcontroller -n openshift-migration
Copy to Clipboard Copied! Mettez à jour les paramètres suivants :
... mig_controller_limits_cpu: "1" mig_controller_limits_memory: "10Gi" ... mig_controller_requests_cpu: "100m" mig_controller_requests_memory: "350Mi" ... mig_pv_limit: 100 mig_pod_limit: 100 mig_namespace_limit: 10 ...
... mig_controller_limits_cpu: "1"
1 mig_controller_limits_memory: "10Gi"
2 ... mig_controller_requests_cpu: "100m"
3 mig_controller_requests_memory: "350Mi"
4 ... mig_pv_limit: 100
5 mig_pod_limit: 100
6 mig_namespace_limit: 10
7 ...
Copy to Clipboard Copied! - 1
- Spécifie le nombre de processeurs disponibles pour la CR
MigrationController
. - 2
- Spécifie la quantité de mémoire disponible pour la CR
MigrationController
. - 3
- Spécifie le nombre d’unités centrales disponibles pour les demandes de CR
MigrationController
.100m
représente 0,1 unité centrale (100 * 1e-3). - 4
- Spécifie la quantité de mémoire disponible pour les demandes de CR
MigrationController
. - 5
- Spécifie le nombre de volumes persistants qui peuvent être migrés.
- 6
- Spécifie le nombre de pods qui peuvent être migrés.
- 7
- Spécifie le nombre n’espaces de nommage qui peuvent être migrés.
Créez un plan de migration qui utilise les paramètres mis à jour pour vérifier les modifications.
Si votre plan de migration dépasse les limites de CR
MigrationController
, la console MTC affiche un message d’avertissement lorsque vous enregistrez le plan.
9.5.2. Activation du redimensionnement des volumes persistants pour la migration directe des volumes
Vous pouvez activer le redimensionnement des volumes persistants (PV) pour la migration directe des volumes pour éviter de manquer d’espace disque sur le cluster de destination.
Lorsque l’utilisation du disque d’un PV atteint un niveau configuré, la ressource personnalisée (CR) MigrationController
compare la capacité de stockage demandée d’une revendication de volume persistant (PVC) à sa capacité allouée réelle. Ensuite, il calcule l’espace requis sur le cluster de destination.
Un paramètre pv_resizing_threshold
détermine à quel moment le redimensionnement des PV est utilisé. Le seuil par défaut est de 3%
. Cela signifie que le redimensionnement des PV se produit lorsque l’utilisation du disque d’un PV est supérieure à 97%
. Vous pouvez augmenter ce seuil afin que le redimensionnement des PV se produise à un niveau d’utilisation du disque plus faible.
La capacité de la PVC est calculée selon les critères suivants :
-
Si la capacité de stockage demandée (
spec.resources.requests.storage
) de la PVC n’est pas égale à sa capacité mise en service réelle (status.capacity.storage
), c’est la valeur la plus élevée qui est utilisée. - Si un volume persistant est mis en service via une PVC et qu’il est modifié par la suite, de sorte que ses capacités de PV et de PVC ne correspondent plus, c’est la valeur la plus élevée qui est utilisée.
Conditions préalables
-
Les PVC doivent être attachées à un ou plusieurs pods en cours d’exécution pour que la ressource personnalisée
MigrationController
puisse exécuter des commandes.
Procédure
- Connectez-vous au cluster hôte.
Activez le redimensionnement des PV en appliquant un correctif à la ressource personnalisée
MigrationController
:oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! - 1
- Définissez la valeur sur
false
pour désactiver le redimensionnement des PV.
Facultatif : mettez à jour le paramètre
pv_resizing_threshold
pour augmenter le seuil :oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! - 1
- La valeur par défaut est
3
.
Lorsque le seuil est dépassé, le message d’état suivant est affiché dans l’état de la ressource personnalisée
MigPlan
:status: conditions: ... - category: Warn durable: true lastTransitionTime: "2021-06-17T08:57:01Z" message: 'Capacity of the following volumes will be automatically adjusted to avoid disk capacity issues in the target cluster: [pvc-b800eb7b-cf3b-11eb-a3f7-0eae3e0555f3]' reason: Done status: "False" type: PvCapacityAdjustmentRequired
status: conditions: ... - category: Warn durable: true lastTransitionTime: "2021-06-17T08:57:01Z" message: 'Capacity of the following volumes will be automatically adjusted to avoid disk capacity issues in the target cluster: [pvc-b800eb7b-cf3b-11eb-a3f7-0eae3e0555f3]' reason: Done status: "False" type: PvCapacityAdjustmentRequired
Copy to Clipboard Copied! NotePour le stockage AWS gp2, ce message n’apparaît que si la valeur
pv_resizing_threshold
est supérieure ou égale à 42 % en raison de la manière dont gp2 calcule l’utilisation et la taille des volumes. (BZ#1973148)
9.5.3. Activation des clients Kubernetes en cache
Vous pouvez activer les clients Kubernetes mis en cache dans la ressource personnalisée (CR) MigrationController
pour améliorer les performances pendant la migration. L’avantage le plus important en termes de performances se manifeste lors de la migration entre des clusters situés dans des régions différentes ou avec une latence importante du réseau.
Cependant, dans le cas des tâches déléguées (comme la sauvegarde Rsync pour la migration directe des volumes ou la sauvegarde et la restauration Velero), il n’y a pas d’amélioration des performances avec les clients en cache.
Les clients en cache ont besoin de plus de mémoire, car la CR MigrationController
met en cache toutes les ressources API nécessaires pour interagir avec les CR MigCluster
. Les demandes qui sont normalement envoyées au serveur d’API sont redirigées vers le cache à la place. Le cache surveille le serveur d’API pour les mises à jour.
Vous pouvez augmenter les limites de mémoire et les demandes de la CR MigrationController
si des erreurs OOMKilled
se produisent après avoir activé les clients en cache.
Procédure
Activez les clients en cache en exécutant la commande suivante :
oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
Copy to Clipboard Copied! Facultatif : augmentez les limites de mémoire de la CR
MigrationController
en exécutant la commande suivante :oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
Copy to Clipboard Copied! Facultatif : augmentez le nombre de requêtes de mémoire
MigrationController
CR en exécutant la commande suivante :oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
Copy to Clipboard Copied!