Configurer des pools de nœuds dédiés

À propos des pools de nœuds

Un pool de nœuds est un groupe de nœuds au sein d'un cluster qui possèdent tous la même configuration. En règle générale, vous définissez des pools de nœuds distincts lorsque les pods ont des exigences de ressources différentes. Par exemple, les pods apigee-cassandra nécessitent un stockage persistant, contrairement aux autres pods Apigee hybrid.

Cet article explique comment configurer des pools de nœuds dédiés pour une installation hybride.

Utiliser les sélecteurs de nœuds par défaut

La bonne pratique consiste à configurer deux pools de nœuds dédiés : un pour les pods Cassandra et un pour tous les autres pods d'exécution. À l'aide des configurations nodeSelector par défaut, le programme d'installation attribue les pods Cassandra à un pool de nœuds avec état nommé apigee-data et tous les autres pods à un pool de nœuds sans état nommé apigee-runtime. Il vous suffit de créer des pools de nœuds portant ces noms, et Apigee hybrid gère les détails de planification de pod :

Nom du pool de nœuds par défaut Description
apigee-data Un pool de nœuds avec état.
apigee-runtime Un pool de nœuds sans état.

Voici la configuration nodeSelector par défaut. La propriété apigeeData spécifie un pool de nœuds pour les pods Cassandra. Le fichier apigeeRuntime spécifie le pool de nœuds pour tous les autres pods. Vous pouvez remplacer ces paramètres par défaut dans votre fichier de remplacement, comme expliqué plus bas dans cet article :

nodeSelector:
  requiredForScheduling: true
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Pour vous assurer que les pods sont programmés sur les bons nœuds, créez deux pools de nœuds portant les noms apigee-data et apigee-runtime.

Propriété requiredForScheduling

La section de configuration nodeSelector possède une propriété appelée requiredForScheduling :

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Si elle est définie sur false, les pods sous-jacents sont programmés, que les pools de nœuds soient définis ou non avec les noms requis. Cela signifie que si vous oubliez de créer des pools de nœuds ou si vous nommez accidentellement un pool de nœuds autre que apigee-runtime ou apigee-data, l'installation de l'environnement d'exécution hybride réussit. Kubernetes décidera où exécuter vos pods.

Si vous définissez requiredForScheduling sur true (valeur par défaut), l'installation échouera, sauf si des pools de nœuds correspondent aux clés et aux valeurs nodeSelector configurées.

Utiliser des noms de pools de nœuds personnalisés

Si vous ne souhaitez pas utiliser les pools de nœuds avec les noms par défaut, vous pouvez créer des pools de nœuds avec des noms personnalisés et spécifier ces noms dans le stanza nodeSelector. Par exemple, la configuration suivante attribue les pods Cassandra au pool nommé my-cassandra-pool et tous les autres pods au pool nommé my-runtime-pool :

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "my-runtime-pool"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "my-cassandra-pool"

Remplacer le pool de nœuds pour des composants spécifiques sur GKE

Vous pouvez également remplacer les configurations de pool de nœuds au niveau du composant individuel. Par exemple, la configuration suivante attribue le pool de nœuds avec la valeur apigee-custom au composant runtime :

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

Vous pouvez spécifier un pool de nœuds personnalisé sur l'un de ces composants :

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

Configuration des pools de nœuds GKE et Google Distributed Cloud

Sur les plates-formes GKE et Google Distributed Cloud (GDC), les pools de nœuds doivent avoir un nom unique que vous fournissez lorsque vous créez les pools. GKE/GDC attribue automatiquement un libellé à chaque nœud avec les caractéristiques suivantes :

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

Tant que vous créez des pools de nœuds nommés apigee-data et apigee-runtime, aucune configuration supplémentaire n'est requise. Si vous souhaitez utiliser des noms de nœuds personnalisés, consultez la page Utiliser des noms de pools de nœuds personnalisés.

Configuration du pool de nœuds sur d'autres plates-formes Kubernetes.

Consultez la documentation de votre plate-forme Kubernetes pour en savoir plus sur l'étiquetage et la gestion des pools de nœuds.

Bien que les pools de nœuds libellent automatiquement les nœuds de calcul par défaut, vous pouvez éventuellement libeller les nœuds de calcul manuellement en procédant comme suit :

  1. Exécutez la commande suivante pour obtenir la liste des nœuds de calcul du cluster :
    kubectl -n APIGEE_NAMESPACE get nodes

    Si vous utilisez des libellés de pool de nœuds personnalisés, assurez-vous que chaque paire clé-valeur est unique. Exemple :

    nodeSelector:
      requiredForScheduling: true
      apigeeRuntime:
        key: "pool1-key"
        value: "pool1-label"
      apigeeData:
        key: "pool2-key"
        value: "pool2-label"
    

    Remplacer le pool de nœuds pour des composants spécifiques

    Vous pouvez également remplacer les configurations de pool de nœuds au niveau du composant individuel. Par exemple, la configuration suivante attribue le pool de nœuds avec la valeur apigee-custom au composant runtime :

    runtime:
      nodeSelector:
        key: apigee.com/apigee-nodepool
        value: apigee-custom

    Vous pouvez spécifier un pool de nœuds personnalisé sur l'un de ces composants :

    • apigeeingressgateway
    • cassandra
    • logger
    • mart
    • metrics
    • runtime
    • synchronizer
    • udca