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.
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
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.
Comprueba que la etiqueta esté configurada.
kf configure-space get-nodeselector space-name
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:
Edita el
config-defaults
de tu clúster de Kf y añade las etiquetas.$ kubectl -n kf edit configmaps config-defaults
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.
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
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"}}]'