Habilitar el aislamiento de computación

Las aplicaciones de Kf se pueden implementar en nodos dedicados del clúster. Esta función es necesaria si quieres tener más control sobre un nodo en el que se coloca un pod de aplicación. Por ejemplo:

  • Si compartes el mismo clúster para diferentes aplicaciones, pero quieres nodos dedicados para una aplicación concreta.
  • Si quieres nodos dedicados para una organización determinada (espacio de Kf).
  • Si quieres segmentar por un sistema operativo concreto, como Windows.
  • Si quieres colocar conjuntamente pods de dos servicios diferentes que se comuniquen con frecuencia.

Para habilitar el aislamiento de computación, Kf usa nodeSelector de Kubernetes. Para usar esta función, primero añada etiquetas a los nodos o grupos de nodos en los que quiera que se coloquen sus pods de aplicaciones y, a continuación, añada las mismas etiquetas de calificación al espacio de Kf. Todas las aplicaciones instaladas en este espacio se colocarán en los nodos con etiquetas coincidentes.

Kf crea un pod de Kubernetes para ejecutar cada compilación de Kf. La función buildNodeSelector se puede usar para aislar los recursos de computación y ejecutar solo los pods de compilación. Un caso práctico es aislar los pods de compilación para que se ejecuten en nodos con SSD, mientras que los pods de la aplicación se ejecutan en otros nodos. La función BuildNodeSelectors proporciona optimización de recursos de computación y flexibilidad en el clúster. Consulta el capítulo "Configurar BuildNodeSelectors y un grupo de nodos de compilación" de esta página.

Configurar nodeSelector en un clúster de Kf

De forma predeterminada, el aislamiento de computación está inhabilitado. Sigue este procedimiento para configurar etiquetas y nodeSelector.

  1. Añade una etiqueta (distype=ssd) al nodo en el que quieras que se coloquen los pods de tu aplicación.

    kubectl label nodes nodeid disktype=ssd
  2. Añade la misma etiqueta en el espacio de Kf. Todas las aplicaciones implementadas en este espacio se colocarán en los nodos aptos.

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

    Puedes añadir varias etiquetas volviendo a ejecutar el mismo comando.

  3. Comprueba que la etiqueta esté configurada.

    kf configure-space get-nodeselector space-name
  4. Elimina la etiqueta del espacio.

    kf configure-space unset-nodeselector space-name disktype

Anular nodeSelector para pilas de Kf

La implementación de aplicaciones de Kf se puede orientar aún más en función de la pila (paquete de compilación) que se utilice para compilar y empaquetar la aplicación. Por ejemplo, si quieres que tus aplicaciones compiladas con spaceStacksV2 se implementen en nodos con el kernel de Linux 4.4.1, Los valores de nodeSelector de una pila anulan los valores configurados en el espacio.

Para configurar nodeSelector en una pila, sigue estos pasos:

  1. Edita el config-defaults de tu clúster de Kf y añade las etiquetas.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. Añade nodeSelector a la definición de pilas.

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

Configurar BuildNodeSelectors y un grupo de nodos de compilación

Los selectores de nodos de compilación solo sirven para anular los selectores de nodos de los pods de compilación, no afectan a los pods de aplicaciones. Por ejemplo, si especificas los selectores de nodos en el espacio y los selectores de nodos de compilación en Kfsystem, los pods de la aplicación tendrán los selectores de nodos del espacio, mientras que los pods de compilación tendrán los selectores de nodos de compilación de Kfsystem. Si los selectores de nodos solo se especifican en el espacio, tanto los pods de la aplicación como los de compilación tendrán el selector de nodos del espacio.

  1. Añade etiquetas (disktype:ssd, por ejemplo) a los nodos a los que quieras asignar tus pods de compilación.

    kubectl label nodes nodeid disktype=ssd
  2. Añade o actualiza selectores de nodos de compilación (en formato de pares key:value) aplicando un parche a KfSystem CR.

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

    Por ejemplo, para añadir disktype=ssd como selector de nodos de compilación, haz lo siguiente:

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