Utilisez les libellés de nœud et le champ nodeSelector pour diriger les pods vers des nœuds spécifiques dans votre cluster ACK. Par défaut, l'ordonnanceur Kubernetes place automatiquement les pods. Utilisez nodeSelector lorsque vos charges de travail ont des exigences matérielles particulières, par exemple des nœuds équipés de GPU pour des tâches d'apprentissage automatique, des nœuds avec SSD pour des bases de données à forte intensité d'E/S, ou des nœuds dédiés pour la colocalisation de services sensibles à la latence.
Le champ nodeSelector constitue la contrainte de planification la plus simple. Contrairement aux taints et tolerations, il n'empêche pas d'autres pods de s'exécuter sur le même nœud ; il contrôle uniquement l'emplacement des pods ciblés. Pour une isolation plus stricte ou des règles plus expressives, privilégiez l'affinité de nœud ou l'affinité inter-pod.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK managé ou un cluster ACK dédié (la création de nouveaux clusters ACK dédiés n'est plus possible)
Une charge de travail sans état (Deployment) ou une charge de travail avec état (StatefulSet) à déployer
Étape 1 : Ajouter un libellé à un nœud
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, choisissez Nodes > Nodes.
Dans l'angle supérieur droit de la page, cliquez sur Manage Labels and Taints. Sous l'onglet Labels, ajoutez un libellé au nœud cible. Dans cet exemple, définissez Name sur
podet Value surnginx. Pour plus d'informations, consultez Créer et gérer des libellés de nœud.
Étape 2 : Déployer avec un nodeSelector
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
-
Sur la page Deployments, cliquez sur Create from YAML et appliquez le manifeste suivant. Le champ
nodeSelectorrestreint les pods aux nœuds portant le libellépod: nginx.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: pod: nginx # Pods are scheduled only to nodes with this label. containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 Sur la page Deployments, cliquez sur le nom du Deployment. Sous l'onglet Pods, vérifiez la colonne des nœuds pour chaque pod. Tous les pods doivent s'exécuter sur des nœuds portant le libellé
pod: nginx. Si un pod apparaît sur un autre nœud, vérifiez que le libellé du nœud a été correctement appliqué à l'étape 1.
Étapes suivantes
Pour une référence complète sur
nodeSelectoret d'autres méthodes d'affectation des nœuds, consultez Assigning Pods to Nodes.Pour contrôler l'ordre de planification des pods et configurer la mise à l'échelle inverse pendant les déploiements et les opérations de montée en charge, consultez Personnaliser la planification prioritaire des ressources élastiques.