|
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. |
Configuration des valeurs d’affinité
Les configurations d’affinité contrôlent le comportement de planification des pods dans SUSE® Observability. Les valeurs d’affinité aident à optimiser l’utilisation des ressources et à garantir une haute disponibilité en contrôlant où les pods sont planifiés.
Options de configuration disponibles
Affinité des nœuds
Vous pouvez utiliser l’affinité des nœuds pour planifier des pods sur des nœuds ou des groupes d’instances spécifiques, tels que des nœuds EC2 déployés dans la même zone de disponibilité.
affinity:
# Node Affinity settings - applied to all components when configured
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- us-west-2a
Anti-affinité des pods
Vous pouvez utiliser l’anti-affinité des pods pour planifier des répliques de services de données sur différents nœuds afin d’assurer une haute disponibilité. Par défaut, la planification est requise (anti-affinité stricte) et topologyKey est kubernetes.io/hostname.
affinity:
podAntiAffinity:
# Enable required pod anti-affinity (true = hard, false = soft)
requiredDuringSchedulingIgnoredDuringExecution: true
# Topology key for pod anti-affinity
topologyKey: "kubernetes.io/hostname"
Comportement
Anti-affinité des pods
-
Lorsqu’elle est configurée : Appliquée uniquement lorsque
sizing.profilese termine par-ha(profils de haute disponibilité) -
Profils HA :
150-ha,250-ha,500-ha,4000-ha -
Composants affectés : Tous les services de données avec état, y compris Clickhouse, Kafka, Zookeeper, VictoriaMetrics, StackGraph, Elasticsearch
Configurations d’exemple
Affinité des nœuds de base (même zone de disponibilité) + anti-affinité stricte des pods pour un déploiement HA
Supposons que vous ayez défini sizing.profile sur l’un des profils HA. Les valeurs ci-dessous configurent l’affinité des nœuds pour planifier les composants de SUSE® Observability dans la zone us-west-2a et imposent la planification des répliques des mêmes services de données sur différents hôtes (affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution=true par défaut).
affinity:
# Schedule all pods to nodes in the same AZ
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- us-west-2a
Anti-affinité des pods souple pour le déploiement HA
Si l’imposition de la planification des services de données sur différents nœuds n’est pas souhaitable, vous pouvez configurer l’anti-affinité des pods en mode « souple » :
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: false
Syntaxe
-
Méthode recommandée
-
Méthode héritée (Cessée de la prise en charge)
|
La méthode de configuration |
Ajoutez la configuration d’affinité directement dans votre fichier values.yaml sous global.suseObservability.affinity :
global:
suseObservability:
# Your existing configuration
license: "YOUR-LICENSE-KEY"
baseUrl: "https://observability.example.com"
sizing:
profile: "150-ha"
adminPassword: "your-password"
# Affinity configuration
affinity:
# Node affinity - schedule all pods to nodes in the same AZ
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- us-west-2a
# Pod anti-affinity for HA profiles (infrastructure components)
podAntiAffinity:
# true = hard anti-affinity, false = soft anti-affinity
requiredDuringSchedulingIgnoredDuringExecution: true
topologyKey: "kubernetes.io/hostname"
Puis installez ou mettez à niveau avec une seule commande :
helm upgrade --install \
--namespace suse-observability \
--create-namespace \
--values values.yaml \
suse-observability \
suse-observability/suse-observability
| Pour les profils HA, l’anti-affinité des pods est automatiquement appliquée à tous les services de données avec état. Vous devez seulement le configurer si vous souhaitez changer le comportement par défaut. |
Pour plus de détails sur la migration depuis la méthode héritée, consultez le guide de migration.
|
Cette méthode n’est plus prise en charge. Pour les nouvelles installations, utilisez la méthode recommandée ci-dessus. Pour les installations existantes utilisant cette méthode, consultez le guide de migration pour passer au nouveau format de configuration. |
==== Étape 1 : Créez votre fichier de valeurs d’affinité
Créez un fichier de valeurs séparé avec votre configuration d’affinité souhaitée. Par exemple, enregistrez ce qui suit sous suse-observability-values-values.yaml :
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- us-west-2a
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: true
==== Étape 2 : Générez des valeurs de modèle d’affinité
Exécutez la commande suivante pour générer le modèle de valeurs d’affinité :
export VALUES_DIR=.
helm template \
--set license='<your license>' \
--set baseUrl='<suse-observability-base-url>' \
--set sizing.profile='<sizing.profile>' \
--values suse-observability-values-values.yaml \
suse-observability-values \
suse-observability/suse-observability-values --output-dir $VALUES_DIR
==== Étape 3 : Utilisez les valeurs générées lors de l’installation de Helm
Incluez les valeurs d’affinité générées dans votre installation Helm :
helm upgrade \
--install \
--namespace suse-observability \
--values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
suse-observability \
suse-observability/suse-observability