Le app Kf possono essere implementate su nodi dedicati nel cluster. Questa funzionalità è necessaria se hai le circostanze in cui potresti volere su un nodo in cui si installa un pod di app. Ad esempio:
- Se condividi lo stesso cluster per app diverse ma vuoi una piattaforma nodi per una particolare app.
- Se vuoi nodi dedicati per una determinata organizzazione (Kf Space).
- Se vuoi scegliere come target un sistema operativo specifico, ad esempio Windows.
- Se vuoi collocare in modo co-localizzato i pod di due servizi diversi che si comunicano frequentemente.
Per abilitare l'isolamento del calcolo, Kf utilizza nodeSelector di Kubernetes. Per usare questa funzionalità, aggiungi prima le etichette ai nodi o ai pool di nodi in cui vuoi eseguire i pod di app, quindi aggiungi le stesse etichette idonee allo spazio Kf. Tutte le app installate in questo spazio vengono quindi caricate sui nodi con le etichette corrispondenti.
Kf crea un pod Kubernetes per eseguire ogni build Kf. La funzionalità buildNodeSelector può essere utilizzata per isolare le risorse di computing ed eseguire solo i pod della build. Un caso d'uso è isolare i pod di compilazione in modo che vengano eseguiti su nodi con unità SSD, mentre i pod di app vengono eseguiti su altri nodi. La funzionalità BuildNodeSelectors offre ottimizzazione e flessibilità delle risorse di calcolo nel cluster. Consulta il capitolo "Configurare BuildNodeSelectors e un pool di nodi di build" in questa pagina.
Configura nodeSelector in un cluster Kf
Per impostazione predefinita, l'isolamento del calcolo è disabilitato. Utilizza la seguente procedura per configurare le etichette e nodeSelector.
Aggiungi un'etichetta (
distype=ssd
) al nodo in cui vuoi che vengano eseguiti i pod dell'applicazione.kubectl label nodes nodeid disktype=ssd
Aggiungi la stessa etichetta allo spazio Kf. Tutte le app di cui è stato eseguito il deployment in questo spazio verranno quindi caricate sui nodi idonei.
kf configure-space set-nodeselector space-name disktype ssd
Puoi aggiungere più etichette eseguendo di nuovo lo stesso comando.
Verifica che l'etichetta sia configurata.
kf configure-space get-nodeselector space-name
Eliminare l'etichetta dallo spazio.
kf configure-space unset-nodeselector space-name disktype
Esegui l'override di nodeSelector per gli stack Kf
Il deployment delle app Kf può essere ulteriormente scelto come target in base allo stack (buildpack) utilizzato per compilare e pacchettizzare l'app. Ad esempio, se vuoi che le applicazioni create con spaceStacksV2
vengano caricate su nodi con il kernel Linux 4.4.1, I valori nodeSelector
in una serie sostituiscono i valori configurati nello spazio.
Per configurare nodeSelector
in una serie:
Modifica il
config-defaults
del cluster Kf e aggiungi le etichette.$ kubectl -n kf edit configmaps config-defaults
Aggiungi
nodeSelector
alla definizione degli stack...... ..... spaceStacksV2: | - name: cflinuxfs3 image: cloudfoundry/cflinuxfs3 nodeSelector: OS_KERNEL: LINUX_4.4.1 ..... .....
configura BuildNodeSelectors e un pool di nodi Build
I selettori dei nodi di compilazione sono efficaci solo per eseguire l'override dei selettori dei nodi per i pod di compilazione e non influiscono sui pod di app. Ad esempio, se specifichi entrambi i selettori di nodi sullo spazio e i selettori dei nodi Build in Kfsystem, i pod dell'app avranno i selettori dei nodi Space, mentre i pod Build avranno i selettori dei nodi Build di Kfsystem. Se i selettori di nodi vengono specificati solo nello spazio, i pod App e Build avranno il selettore di nodi dello spazio.
Aggiungi etichette (ad esempio
disktype:ssd
) ai nodi a cui vuoi assegnare i pod della build.kubectl label nodes nodeid disktype=ssd
Aggiungi/aggiorna i selettori dei nodi di compilazione (nel formato di coppie
key:value
) applicando patch al CR KfSystem.kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'
Ad esempio, per aggiungere
disktype=ssd
come selettore dei nodi di build:kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'