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 du pool de nœuds GKE

Dans GKE, les pools de nœuds doivent avoir un nom unique que vous fournissez lorsque vous créez les pools, et GKE 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.

Ajouter manuellement des libellés aux nœuds

Apigee hybrid n'est actuellement compatible qu'avec Anthos 1.1.1. Cette version d'Anthos n'est pas compatible avec la fonctionnalité de pool de nœuds. Par conséquent, vous devez ajouter manuellement des libellés aux nœuds de calcul, comme expliqué ci-dessous. Une fois votre cluster hybride opérationnel, procédez 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

    Exemple de résultat :

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready    <none>   7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready    <none>   7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready    <none>   7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready    <none>   7d      v1.14.6-gke.2
  2. Étiquetez chaque nœud pour différencier les nœuds d'exécution et les nœuds de données.

    Utilisez cette commande pour étiqueter les nœuds :

    kubectl label node NODE_NAME KEY=VALUE

    Exemple :

    $ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data

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

Vous pouvez également remplacer les configurations de pool de nœuds au niveau du composant individuel pour une installation Anthos GKE. 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 :

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