Habilitar el aislamiento de procesamiento

Las aplicaciones de Kaf se pueden implementar en nodos dedicados en el clúster. Esta función es obligatoria si tienes circunstancias en las que es posible que desees tener más control sobre un nodo al que llega un pod de apps. Por ejemplo:

  • Si compartes el mismo clúster para diferentes aplicaciones, pero deseas nodos dedicados para una app en particular.
  • Si deseas tener nodos dedicados para una organización determinada (Kf Space).
  • Si quieres apuntar a un sistema operativo específico, como Windows.
  • Si deseas ubicar de forma conjunta los pods de dos servicios diferentes que se comunican con frecuencia.

Para habilitar el aislamiento de procesamiento, Kf usa nodeSelector de Kubernetes. Para usar esta función, primero agrega etiquetas en los nodos o los grupos de nodos en los que quieres que lleguen los pods de la app y, luego, agrega las mismas etiquetas aptas en el espacio de Kf. Todas las apps instaladas en este espacio llegan a los nodos con etiquetas coincidentes.

Kf crea un Pod de Kubernetes para ejecutar cada compilación de Kf, el atributo buildNodeSelector se puede usar para aislar recursos de procesamiento a fin de 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 se ejecutan los Pods de la app en otros nodos. El atributo BuildNodeSelectors proporciona optimización de recursos y flexibilidad en el clúster. Consulta el capítulo “Configurar BuildNodeSelectors y un grupo de nodos de compilación” en esta página.

Configura nodeSelector en un clúster de Kf

El aislamiento de procesamiento está inhabilitado de forma predeterminada. Usa el siguiente procedimiento para configurar etiquetas y nodeSelector.

  1. Agrega una etiqueta (distype=ssd) en el nodo al que quieres dirigir los Pods de tu aplicación.

    kubectl label nodes nodeid disktype=ssd
  2. Agrega la misma etiqueta en el espacio de Kf. Todas las aplicaciones implementadas en este espacio llegarán a los nodos aptos.

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

    Para agregar varias etiquetas, ejecuta de nuevo el mismo comando.

  3. Verifica que la etiqueta esté configurada.

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

    kf configure-space unset-nodeselector space-name disktype

Anula nodeSelector para pilas de Kf

La implementación de aplicaciones de Kf aún se puede determinar según qué pila se usa para compilar y empaquetar la aplicación. Por ejemplo, si deseas que tus aplicaciones compiladas con spaceStacksV2 se dirijan a nodos con el kernel 4.4.1 de Linux. Los valores nodeSelector de una pila anularán los valores configurados en el espacio.

Para configurar nodeSelector en una pila, haz lo siguiente:

  1. Edita los config-defaults de tu clúster de Kf y agrega las etiquetas.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. Agrega nodeSelector a la definición de las pilas.

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

Configura BuildNodeSelectors y un grupo de nodos de compilación

Los selectores de nodos de compilación solo son eficaces a fin de anular los selectores de nodos para los Pods de compilación, no afectan a los Pods de la app. 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, y los pods de compilación tendrán los selectores de nodos de compilación de Kfsystem. Si solo se especifican selectores de nodo en el espacio, los pods de la app y la compilación tendrán el selector de nodo del espacio.

  1. Agrega etiquetas (por ejemplo, disktype:ssd) a los nodos a los que deseas que se asignen los Pods de compilación.

    kubectl label nodes nodeid disktype=ssd
  2. Agrega o actualiza selectores de nodo de compilación (en el formato de pares key:value) mediante la aplicación de parches a CR de KfSystem.

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

    Por ejemplo, para agregar 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"}}]'