Les pools de nœuds cloud hybrides vous permettent d'enregistrer les nœuds de votre centre de données (IDC) dans un cluster ACK. Cette fonctionnalité offre une gestion unifiée et une planification coordonnée des ressources sur site et cloud. Cette rubrique explique comment planifier les applications sur un pool de nœuds cloud hybride pour répondre aux exigences liées à l'emplacement des ressources, à la conformité en matière de localisation des données ou à du matériel spécifique.
Fonctionnement
Lorsque vous créez un pool de nœuds cloud hybride, ACK ajoute automatiquement un taint et un libellé à chaque nœud du pool :
Taint :
nodepool-type=hybridcloud:NoSchedule— empêche par défaut les composants système et les charges de travail générales de s'exécuter sur les nœuds cloud hybrides.Libellé :
alibabacloud.com/nodepool-type: hybridcloud— identifie le type de nœud afin que les politiques de planification puissent le cibler.
Une toleration supprime la restriction de planification et rend un pod éligible aux nœuds cloud hybrides. Elle ne garantit pas son placement sur ces nœuds. Pour garantir ce placement, associez la toleration à une règle nodeSelector ou nodeAffinity.
Choisir une approche
| Approche | Cas d'utilisation | Configuration clé |
|---|---|---|
| Autoriser (Solution 1) | Étendre la capacité totale sans contrainte stricte d'emplacement. Les pods peuvent toujours être planifiés sur d'autres pools de nœuds. | tolerations uniquement |
| Cibler un pool de nœuds spécifique (Solution 2a) | Matériel spécifique, topologie réseau ou résidence des données pour un seul pool. | tolerations + nodeSelector (ID du pool de nœuds) |
| Cibler n'importe quel pool de nœuds cloud hybride (Solution 2b) | Charges de travail devant s'exécuter sur site, mais pouvant être réparties sur n'importe quel pool de nœuds IDC. | tolerations + nodeAffinity |
| Priorité entre les pools (Solution 3) | Privilégier un pool cloud hybride moins coûteux pour la mise à l'échelle horizontale ; libérer en premier les nœuds ECS cloud lors de la réduction. | ResourcePolicy + tolerations |
Solution 1 : Autoriser la planification sur les nœuds cloud hybrides
Cas d'utilisation : Votre cluster a besoin de davantage de capacité totale et votre charge de travail n'impose aucune contrainte stricte de placement. Avec cette configuration, le planificateur considère le pool de nœuds cloud hybride comme un candidat valide, mais les pods peuvent toujours s'exécuter sur d'autres pools de nœuds actifs.
Configuration principale : Ajoutez une entrée tolerations dans spec.template.spec :
spec:
template:
spec:
# Allow this pod to run on hybrid cloud nodes.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
Solution 2 : Forcer la planification sur les nœuds cloud hybrides
Ces deux sous-solutions garantissent que les pods seront planifiés sur des nœuds cloud hybrides. Choisissez celle qui correspond au niveau de précision requis pour cibler un pool de nœuds.
Cibler un pool de nœuds spécifique
Cas d'utilisation : Votre charge de travail nécessite un pool de nœuds cloud hybride particulier, par exemple équipé d'un matériel spécifique, disposant d'une topologie réseau dédiée ou soumis à des exigences strictes de résidence des données. Utilisez nodeSelector pour associer les pods à un seul pool de nœuds via son ID.
Configuration principale : Ajoutez à la fois tolerations et nodeSelector dans spec.template.spec :
spec:
template:
spec:
# Core configuration 1: Lift the hybrid cloud scheduling restriction.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
# Core configuration 2: Pin to a specific node pool by ID.
nodeSelector:
alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
Obtenez l'ID du pool de nœuds depuis la page Node Management > Node Pools de votre cluster.
Cibler n'importe quel pool de nœuds cloud hybride
Cas d'utilisation : Votre charge de travail doit s'exécuter sur site, mais peut être déployée sur n'importe quel pool de nœuds cloud hybride. nodeAffinity cible tous les nœuds portant le libellé hybridcloud, ce qui permet aux pods de se répartir sur tous les pools de nœuds IDC plutôt que d'être associés à un seul.
Configuration principale : Ajoutez à la fois tolerations et affinity dans spec.template.spec :
spec:
template:
spec:
# Core configuration 1: Lift the hybrid cloud scheduling restriction.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
# Core configuration 2: Require a hybrid cloud node by label.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: alibabacloud.com/nodepool-type
operator: In
values:
- hybridcloud
Solution 3 : Planification basée sur la priorité avec ResourcePolicy
Cas d'utilisation : Vous disposez de plusieurs pools de nœuds et souhaitez une mise à l'échelle horizontale ordonnée ainsi qu'une réduction inverse. Par exemple, utilisez un pool de nœuds cloud hybride moins coûteux comme pool principal et un pool de nœuds ECS basé sur le cloud comme solution de débordement :
Mise à l'échelle horizontale : Le planificateur affecte les pods au pool cloud hybride en priorité. Si les ressources sont insuffisantes, ils débordent vers le pool ECS.
Réduction : Les pods du pool ECS sont arrêtés en premier, préservant ainsi la stabilité des ressources dans le pool cloud hybride.
Cette solution nécessite deux ressources : une ResourcePolicy et une charge de travail qui y fait référence.
Configuration de ResourcePolicy : Définissez l'ordre de priorité de planification dans la liste units, puis associez la politique aux pods cibles à l'aide d'un selector.
apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
name: nginx-priority-policy
spec:
# Match pods with this label.
selector:
app: nginx-priority
# The scheduler tries pools in order. First match wins.
units:
# Priority 1: hybrid cloud node pool (lower cost, preferred)
- resource: ecs
nodeSelector:
alibabacloud.com/nodepool-id: np-pool-a-xxxxxxxxxx
# Priority 2: ECS node pool (overflow)
- resource: ecs
nodeSelector:
alibabacloud.com/nodepool-id: np-pool-b-xxxxxxxxxx
Obtenez les ID des pools de nœuds depuis la page Node Management > Node Pools de votre cluster.
Configuration de la charge de travail : Ajoutez le libellé correspondant et la toleration cloud hybride au modèle de pod.
spec:
template:
metadata:
# This label connects the pod to the ResourcePolicy above.
labels:
app: nginx-priority
spec:
# Allow scheduling to the hybrid cloud node pool.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
-
ResourcePolicy :
-
Deployment :
Application en production
Ne supprimez pas le taint par défaut
nodepool-type=hybridcloud:NoScheduledu pool de nœuds cloud hybride. Ce taint empêche la planification accidentelle des composants système sur les nœuds cloud hybrides.Ne supprimez ni ne modifiez le libellé par défaut
alibabacloud.com/nodepool-type: hybridcloudsur les nœuds cloud hybrides. La modification ou la suppression de ce libellé peut affecter le fonctionnement normal du pool de nœuds.