Kf-Apps können auf dedizierten Knoten im Cluster bereitgestellt werden. Diese Funktion ist erforderlich, wenn Sie mehr Kontrolle über einen Knoten haben möchten, in dem ein App-Pod landet. Beispiel:
- Wenn Sie denselben Cluster für verschiedene Anwendungen freigeben, aber dedizierte Knoten für eine bestimmte Anwendung möchten.
- Wenn Sie dedizierte Knoten für eine bestimmte Organisation (Kf Space) möchten.
- Wenn Sie ein bestimmtes Betriebssystem wie Windows ansprechen möchten.
- Wenn Sie Pods von zwei verschiedenen Diensten, die häufig kommunizieren, bereitstellen möchten.
Für die Rechenisolation verwendet Kf den nodeSelector. Wenn Sie diese Funktion verwenden möchten, fügen Sie zuerst Labels auf den Knoten oder Knotenpools hinzu, auf denen Ihre App-Pods landen sollen, und fügen dann dieselben qualifizierenden Labels auf dem Kf Space hinzu. Alle Apps in diesem Space werden dann an die Knoten mit übereinstimmenden Labels gesendet.
Kf erstellt einen Kubernetes-Pod, um jeden Kf-Build auszuführen. Mit dem BuildNodeSelector-Feature können Sie Rechenressourcen isolieren, um nur die Build-Pods auszuführen. Ein Anwendungsfall ist das Isolieren von Build-Pods zur Ausführung auf Knoten mit SSD, während die Anwendungs-Pods auf anderen Knoten ausgeführt werden. Das BuildNodeSelectors-Feature bietet Optimierung von Rechenressourcen sowie Flexibilität im Cluster. Weitere Informationen finden Sie im Kapitel "BuildNodeSelectors und einen Build-Knotenpool konfigurieren" auf dieser Seite.
nodeSelector in einem Kf-Cluster konfigurieren
Die Compute-Isolierung ist standardmäßig deaktiviert. Gehen Sie so vor, um Labels und nodeSelector zu konfigurieren.
Fügen Sie dem Knoten, auf dem Ihre Anwendungs-Pods landen sollen, ein Label (
distype=ssd
) hinzu.kubectl label nodes nodeid disktype=ssd
Fügen Sie im Kf Space dasselbe Label hinzu. Alle in diesem Space bereitgestellten Apps leiten dann die entsprechenden Knoten weiter.
kf configure-space set-nodeselector space-name disktype ssd
Sie können mehrere Labels hinzufügen, indem Sie den gleichen Befehl noch einmal ausführen.
Prüfen Sie, ob das Label konfiguriert ist.
kf configure-space get-nodeselector space-name
Löschen Sie das Label aus dem Space.
kf configure-space unset-nodeselector space-name disktype
nodeSelector für kf Stacks überschreiben
Die Bereitstellung von Kf-Apps kann noch weiter ausgerichtet werden, je nachdem, welcher Stack (Buildpack) zum Erstellen und Verpacken der Anwendung verwendet wird. Beispiel: Wenn Sie möchten, dass Ihre Anwendungen mit spaceStacksV2
auf Knoten mit Linux-Kernel 4.4.1 erstellt werden, überschreiben nodeSelector
-Werte die Werte auf einem Stack, die im Space konfiguriert wurden.
So konfigurieren Sie nodeSelector
in einem Stack:
Bearbeiten Sie die
config-defaults
Ihres Kf-Clusters und fügen Sie die Labels hinzu.$ kubectl -n kf edit configmaps config-defaults
Fügen Sie der Stackdefinition
nodeSelector
hinzu...... ..... spaceStacksV2: | - name: cflinuxfs3 image: cloudfoundry/cflinuxfs3 nodeSelector: OS_KERNEL: LINUX_4.4.1 ..... .....
BuildNodeSelectors und einen Build-Knotenpool konfigurieren
Build-Knotenselektoren sind nur beim Überschreiben von Knotenselektoren für die Build-Pods wirksam und haben keine Auswirkungen auf App-Pods. Wenn Sie beispielsweise sowohl die Knotenselektoren für den Space als auch die Build-Knotenselektoren in Kfsystem angeben, haben die App-Pods die Space-Knotenselektoren, während die Build-Pods die Build-Knotenselektoren von Kfsystem haben. Wenn Knotenselektoren nur im Space angegeben sind, haben sowohl die App- als auch die Build-Pods den Knotenselektor aus dem Space.
Fügen Sie den Knoten, denen Ihre Build-Pods zugewiesen werden sollen, Labels hinzu (z. B.
disktype:ssd
).kubectl label nodes nodeid disktype=ssd
Fügen Sie Build-Knotenselektoren (im Format von
key:value
-Paaren) hinzu oder aktualisieren Sie sie, indem Sie KfSystem CR patchen.kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'
So fügen Sie beispielsweise
disktype=ssd
als Build-Knotenselektor hinzu:kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'