Activer l'isolation de calcul

Les applications Kf peuvent être déployées sur des nœuds dédiés dans le cluster. Cette fonctionnalité est requise lorsque vous avez besoin d'un meilleur contrôle sur le choix du nœud dans lequel un pod d'application est placé. Exemple :

  • Si vous partagez le même cluster pour différentes applications, mais que vous souhaitez utiliser des nœuds dédiés pour une application spécifique.
  • Si vous souhaitez utiliser des nœuds dédiés pour une organisation donnée (espace Kf).
  • Si vous souhaitez cibler un système d'exploitation spécifique tel que Windows.
  • Si vous souhaitez colocaliser les pods de deux services différents qui communiquent fréquemment.

Pour activer l'isolation de calcul, Kf utilise nodeSelector Kubernetes. Pour utiliser cette fonctionnalité, commencez par ajouter des libellés sur les nœuds ou les pools de nœuds dans lesquels vous souhaitez que vos pods d'application soient placés, puis ajoutez les mêmes libellés d'éligibilité sur l'espace Kf. Toutes les applications installées dans cet espace seront placées sur les nœuds avec des libellés correspondants.

Kf crée un pod Kubernetes pour exécuter chaque compilation Kf. La fonctionnalité buildNodeSelector peut être utilisée pour isoler les ressources de calcul afin de n'exécuter que les pods de compilation. Un cas d'utilisation consiste à isoler les pods de compilation pour qu'ils s'exécutent sur des nœuds avec SSD, tout en exécutant les pods d'application sur d'autres nœuds. La fonctionnalité BuildNodeSelectors assure l'optimisation des ressources de calcul et la flexibilité dans le cluster. Veuillez consulter le chapitre "Configurer BuildNodeSelectors et un pool de nœuds de compilation" sur cette page.

Configurer nodeSelector dans un cluster Kf

L'isolation de calcul est désactivée par défaut. Procédez comme suit pour configurer les libellés et nodeSelector.

  1. Ajoutez un libellé (distype=ssd) sur le nœud dans lequel vous souhaitez que vos pods d'application arrivent.

    kubectl label nodes nodeid disktype=ssd
  2. Ajoutez le même libellé dans l'espace Kf. Toutes les applications déployées dans cet espace atterrissent alors sur les nœuds éligibles.

    kf configure-space set-nodeselector space-name disktype ssd

    Vous pouvez ajouter plusieurs libellés en exécutant à nouveau la même commande.

  3. Vérifiez que le libellé est configuré.

    kf configure-space get-nodeselector space-name
  4. Supprimez le libellé de l'espace.

    kf configure-space unset-nodeselector space-name disktype

Ignorer la propriété nodeSelector pour les piles kf

Le déploiement des applications Kf peut être ciblé en fonction de la pile (buildpack) utilisée pour créer et empaqueter l'application. Par exemple, si vous souhaitez que vos applications créées avec spaceStacksV2 soient placées sur des nœuds dotés du noyau Linux 4.4.1. Les valeurs nodeSelector d'une pile remplacent celles configurées dans l'espace.

Pour configurer nodeSelector sur une pile, procédez comme suit :

  1. Modifiez config-defaults de votre cluster Kf et ajoutez les libellés.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. Ajoutez nodeSelector à la définition des piles.

    .....
    .....
    spaceStacksV2: |
    - name:  cflinuxfs3
            image: cloudfoundry/cflinuxfs3
            nodeSelector:
                  OS_KERNEL: LINUX_4.4.1 
    .....
    .....
    

Configurer la propriété BuildNodeSelectors et un pool de nœuds de compilation

Les sélecteurs de nœuds de compilation ne sont efficaces que pour remplacer les sélecteurs de nœuds des pods de compilation. Ils n'affectent pas les pods d'application. Par exemple, si vous spécifiez à la fois les sélecteurs de nœuds dans l'espace et les sélecteurs de nœuds de compilation dans Kfsystem, les pods d'application auront les sélecteurs de nœuds d'espace tandis que les pods de compilation auront les sélecteurs de nœuds de compilation de Kfsystem. Si les sélecteurs de nœuds ne sont spécifiés que dans l'espace, les pods d'application et de compilation disposeront du sélecteur de nœuds de l'espace.

  1. Ajoutez des étiquettes (par exemple, disktype:ssd) aux nœuds auxquels vous souhaitez attribuer vos pods de compilation.

    kubectl label nodes nodeid disktype=ssd
  2. Ajoutez/mettez à jour des sélecteurs de nœuds de compilation (au format des paires key:value) en appliquant un correctif à la RS KfSystem.

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'

    Par exemple, pour ajouter disktype=ssd comme sélecteur de nœud de compilation, procédez comme suit :

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'