Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Le app Kf possono essere implementate su nodi dedicati nel cluster.
Questa funzionalità è obbligatoria se ritieni di dover avere un maggiore controllo su un nodo in cui viene eseguito un pod di app. Ad esempio:
Se condividi lo stesso cluster per app diverse, ma vuoi avere nodi dedicati per una determinata app.
Se vuoi nodi dedicati per una determinata organizzazione (spazio Kf).
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 spesso.
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 calcolo in modo da eseguire solo i pod di 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. Fai riferimento al capitolo "Configurare BuildNodeSelector e un pool di nodi di compilazione" in questa pagina.
Configurare nodeSelector in un cluster Kf
Per impostazione predefinita, l'isolamento del calcolo è disattivato. Utilizza la procedura riportata di seguito per configurare le etichette e nodeSelector.
Aggiungi un'etichetta (distype=ssd) al nodo in cui vuoi che vengano eseguiti i pod dell'applicazione.
kubectllabelnodesnodeiddisktype=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.
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.
Configura BuildNodeSelectors e un pool di nodi di compilazione
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 sia i selettori di nodi nello spazio sia i selettori di nodi di Build in Kfsystem, i pod di app avranno i selettori di nodi dello spazio, mentre i pod di Build avranno i selettori di nodi di Build da Kfsystem. Se i selettori di nodi sono specificati solo nello spazio, sia i pod di app sia i pod di Build avranno il selettore di nodi dello spazio.
Aggiungi etichette (ad esempio disktype:ssd) ai nodi a cui vuoi assegnare i pod di compilazione.
kubectllabelnodesnodeiddisktype=ssd
Aggiungi/aggiorna i selettori dei nodi di compilazione (nel formato di coppie key:value) applicando patch al CR KfSystem.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[],[],null,["# Enable compute isolation\n\nKf Apps can be deployed on dedicated nodes in the cluster.\nThis feature is required if you have the circumstances where you might want more\ncontrol on a node where an App Pod lands. For example:\n\n- If you are sharing the same cluster for different Apps but want dedicated nodes for a particular App.\n- If you want dedicated nodes for a given organization (Kf Space).\n- If you want to target a specific operating system like Windows.\n- If you want to co-locate Pods from two different services that frequently communicate.\n\nTo enable compute isolation, Kf uses the Kubernetes [nodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node). To\nuse this feature, first add labels on the nodes or node pools where you want\nyour App Pods to land and then add the same qualifying labels on the Kf Space.\nAll the Apps installed in this Space then land on the nodes with matching labels.\n\nKf creates a Kubernetes pod to execute each Kf Build, the buildNodeSelector feature can be used to isolate compute resources to execute only the Build pods. One use case is to isolate Build pods to run on nodes with SSD, while running the App pods on other nodes. The BuildNodeSelectors feature provides compute resource optimization and flexibility in the cluster. Please refer to chapter 'Configure BuildNodeSelectors and a build node pool' on this page.\n\nConfigure nodeSelector in a Kf cluster\n--------------------------------------\n\nBy default, compute isolation is disabled. Use the following procedure\nto configure labels and nodeSelector.\n\n1. Add a label (`distype=ssd`) on the node where you want your application pods to\n land.\n\n kubectl label nodes \u003cvar translate=\"no\"\u003enodeid\u003c/var\u003e disktype=ssd\n\n2. Add the same label on the Kf Space. All Apps deployed in this Space\n will then land on the qualifying nodes.\n\n kf configure-space set-nodeselector \u003cvar translate=\"no\"\u003espace-name\u003c/var\u003e disktype ssd\n\n You can add multiple labels by running the same command again.\n3. Check the label is configured.\n\n kf configure-space get-nodeselector \u003cvar translate=\"no\"\u003espace-name\u003c/var\u003e\n\n4. Delete the label from the space.\n\n kf configure-space unset-nodeselector \u003cvar translate=\"no\"\u003espace-name\u003c/var\u003e disktype\n\nOverride nodeSelector for [Kf stacks](/migrate/kf/docs/2.8/cli/kf-stacks)\n-------------------------------------------------------------------------\n\nDeployment of Kf Apps can be further targeted based\non what stack (buildpack) is being used to build and package the App. For\nexample, if you want your applications built with `spaceStacksV2` to land on\nnodes with Linux kernel 4.4.1., `nodeSelector` values on a stack override the\nvalues configured on the Space.\n\nTo configure the `nodeSelector` on a stack:\n\n1. Edit the `config-defaults` of your Kf cluster and add the labels.\n\n $ kubectl -n kf edit configmaps config-defaults\n\n2. Add `nodeSelector` to the stacks definition.\n\n .....\n .....\n spaceStacksV2: |\n - name: cflinuxfs3\n image: cloudfoundry/cflinuxfs3\n nodeSelector:\n OS_KERNEL: LINUX_4.4.1 \n .....\n .....\n\nConfigure BuildNodeSelectors and a Build node pool\n--------------------------------------------------\n\nBuild node selectors are only effective at overriding the node selectors for the Build pods, they do not affect App pods. For example, if you specify both the node selectors on the Space and the Build node selectors in Kfsystem, App pods will have the Space node selectors while the Build pods will have the Build node selectors from Kfsystem; if node selectors are only specified in the Space, both the App and Build pods will have the node selector from the Space.\n\n1. Add labels (`disktype:ssd` for example) on the nodes that you want your Build pods to be assigned to.\n\n kubectl label nodes \u003cvar translate=\"no\"\u003enodeid\u003c/var\u003e disktype=ssd\n\n2. Add/update Build node selectors (in the format of `key:value` pairs) by patching KfSystem CR.\n\n kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {\u003ckey\u003e:\u003cvalue\u003e}}]'\n\n For example, to add `disktype=ssd` as the Build node selector: \n\n kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {\"disktype\":\"ssd\"}}]'"]]