Anwendungen auf GPU-basierten Knoten ausführen
Erfahren Sie, wie Sie Anwendungen auf GPU-basierten Worker-Knoten in Clustern ausführen, die mit der Kubernetes Engine (OKE) erstellt wurden.
Um Anwendungen auf GPU-basierten Worker-Knoten auszuführen, wählen Sie eine GPU-Ausprägung und ein kompatibles GPU-Image entweder für die verwalteten Knoten in einem verwalteten Knotenpool oder für selbst verwaltete Knoten aus.
Die Ausprägung bestimmt die Anzahl von CPUs und den Speicherplatz, der jedem Knoten zugewiesen wird. Zu den Ausprägungen, die Sie auswählen können, gehören GPU-Ausprägungen (Graphics Processing Unit), mit den GPUs selbst auf NVIDIA-Grafikkarten. Ursprünglich für die Bearbeitung von Bildern und Grafiken gedacht, sind GPUs sehr effizient bei der parallelen Verarbeitung großer Datenblöcke. Diese Funktion macht GPUs zu einer guten Option beim Deployment datenintensiver Anwendungen. Weitere Informationen zu den GPU-Ausprägungen, die für Worker-Knoten ausgewählt werden sollen, finden Sie unter GPU-Ausprägungen, die von der Kubernetes Engine (OKE) unterstützt werden.
Der Zugriff auf die umfangreiche parallele Computing-Funktionalität von NVIDIA-GPUs erfolgt über CUDA-(Compute Unified Device Architecture-)Bibliotheken. Verschiedene GPUs (z. B. NVIDIA® Tesla VoltaTM, NVIDIA® Tesla PascalTM) erfordern bestimmte Versionen der CUDA-Bibliotheken. Wenn Sie eine GPU-Ausprägung für einen verwalteten Knotenpool oder selbstverwalteten Knoten auswählen, müssen Sie auch ein kompatibles Oracle Linux-GPU-Image auswählen, in dem die CUDA-Librarys vorinstalliert sind. Die Namen kompatibler Images umfassen "GPU".
Sie können eine GPU-Ausprägung und ein kompatibles Image für Worker-Knoten in einem Cluster wie folgt auswählen:
- Verwaltete Knoten: Mit der Kubernetes-Engine können Sie einen verwalteten Knotenpool erstellen und eine GPU-Ausprägung (und ein kompatibles Image) für den Knotenpool auswählen. Alle Worker-Knoten im verwalteten Knotenpool weisen die GPU-Ausprägung auf. Weitere Informationen finden Sie unter Verwalteten Knotenpool erstellen.
- Selbstverwaltete Knoten: Mit dem Compute-Service können Sie eine Compute-Instanz (oder einen Instanzpool) erstellen, um einen selbstverwalteten Knoten zu hosten, eine GPU-Ausprägung (und ein kompatibles Image) für die Instanz auszuwählen und das Kubernetes-Cluster anzugeben, dem die Instanz hinzugefügt werden soll. Sie können nur selbstverwaltete Knoten zu erweiterten Clustern hinzufügen. Weitere Informationen finden Sie unter Mit selbstverwalteten Knoten arbeiten.
Wenn Sie eine Anwendung auf einem Cluster bereitstellen, das Sie mit der Kubernetes-Engine erstellt haben, müssen Sie in der Podspezifikation die Anzahl der erforderlichen GPU-Ressourcen angeben. Um die Anwendung bereitzustellen, bestimmt das kube-scheduler, welcher Knoten über die erforderlichen Ressourcen verfügt. Wenn ein Anwendungspod auf einem Knoten mit einer GPU-Ausprägung ausgeführt werden soll, werden die folgenden Elemente in dem Pod gemountet:
- die angeforderte Anzahl an GPU-Geräten
- CUDA-Bibliothek des Knotens
Die Anwendung ist effektiv von den verschiedenen GPU-Typen isoliert. Daher müssen CUDA-Bibliotheken für verschiedene GPUs nicht in den Anwendungscontainer aufgenommen werden, um sicherzustellen, dass der Container portabel bleibt.
Beachten Sie Folgendes:
- Sie können GPU-Ausprägungen für verwaltete Knotenpools in Clustern angeben, auf denen Kubernetes-Version 1.19.7 oder höher ausgeführt wird. Geben Sie keine GPU-Ausprägung für verwaltete Knotenpools in Clustern an, auf denen frühere Versionen von Kubernetes ausgeführt werden.
- Mit der Konsole, der API oder der CLI können Sie ein GPU-Image zur Verwendung in einer GPU-Ausprägung angeben. Sie können auch die API oder die CLI verwenden, um ein Nicht-GPU-Image zur Verwendung in einer GPU-Ausprägung anzugeben.
- Nachdem Sie einen verwalteten Knotenpool mit einer GPU-Ausprägung erstellt haben, können Sie den Knotenpool nicht in eine Nicht-GPU-Ausprägung ändern. Ebenso können Sie einen verwalteten Knotenpool mit einer Nicht-GPU-Ausprägung nicht in eine GPU-Ausprägung ändern.
- GPU-Ausprägungen sind nicht unbedingt in jeder Availability-Domain verfügbar.
- Sie können GPU-Ausprägungen für verwaltete Knotenpools in Clustern angeben, die VCN-nativ sind (d.h. Cluster mit Kubernetes-API-Endpunkten, die in einem Subnetz Ihres VCN gehostet werden). Geben Sie keine GPU-Ausprägung für verwaltete Knotenpools in einem Cluster an, wenn der Kubernetes-API-Endpunkt des Clusters nicht in Ihr VCN integriert ist. Siehe In VCN-native Cluster migrieren.
- Sie können Anwendungen auf GPU-Worker-Knoten in verwalteten Knotenpools ausführen, jedoch nicht in virtuellen Knotenpools.
Pod für die Ausführung nur auf Knoten mit einer GPU definieren
Die folgende Konfigurationsdatei definiert einen Pod, der auf jedem Knoten im Cluster ausgeführt werden soll, der über eine verfügbare GPU-Ressource verfügt (unabhängig vom Typ der GPU):
apiVersion: v1
kind: Pod
metadata:
name: test-with-gpu-workload
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
image: k8s.gcr.io/cuda-vector-add:v0.1
resources:
limits:
nvidia.com/gpu: 1
Pod definieren, das nur auf Knoten ausgeführt werden soll, die keine GPU haben
Die folgende Konfigurationsdatei definiert einen Pod, der nur auf Knoten im Cluster ausgeführt werden soll, die keine GPU haben:
apiVersion: v1
kind: Pod
metadata:
name: test-with-non-gpu-workload
spec:
restartPolicy: OnFailure
containers:
- name: test-with-non-gpu-workload
image: "oraclelinux:8"
Von der Kubernetes Engine (OKE) unterstützte GPU-Ausprägungen
Kubernetes Engine unterstützt verschiedene GPU-Ausprägungen für verwaltete Knotenpools und -knoten sowie für selbstverwaltete Knoten.
Aufgrund von Servicelimits und Compartment Quotas sind einige der unterstützten GPU-Ausprägungen möglicherweise in Ihrem bestimmten Mandanten nicht verfügbar.
Unterstützte GPU-Ausprägungen für verwaltete Knotenpools und verwaltete Knoten
Für verwaltete Knotenpools und verwaltete Knoten unterstützt die Kubernetes Engine die folgenden GPU-Ausprägungen:
-
Von der Kubernetes-Engine unterstützte Virtual-Machine-(VM-)GPU-Ausprägungen für verwaltete Knotenpools und verwaltete Knoten:
- VM.GPU.A10.1, VM.GPU.A10.2
- VM.GPU.A100.40G.1, VM.GPU.A100.40G.2, VM.GPU.A100.40G.4, VM.GPU.A100.40G.8
- VM.GPU.A100.80G.1, VM.GPU.A100.80G.2, VM.GPU.A100.80G.4, VM.GPU.A100.80G.8
- VM.GPU.A100. B40G.1, VM.GPU.A100. B40G.2, VM.GPU.A100. B40G.4
- VM.GPU.GU1.1, VM.GPU.GU1.2,
- VM.GPU.L40S.1, VM.GPU.L40S.2
- VM.GPU2.1
- VM.GPU3.1, VM.GPU3.2, VM.GPU3.4
-
Von Kubernetes Engine unterstützte Bare Metal-(BM-)GPU-Ausprägungen für verwaltete Knotenpools und verwaltete Knoten:
- BM.GPU.A10,4
- BM.GPU.A100-v2.8
- BM.GPU.B4.8
- BM.GPU.GM4.8
- BM.GPU.GU1.4
- BM.GPU.H100.8
- BM.GPU.L40S.4
- BM.GPU.T1.2
- BM.GPU.T1-2.4
- BM.GPU2.2
- BM.GPU3.8
- BM.GPU4.8
Aufgrund von Servicelimits und Compartment Quotas sind einige der unterstützten GPU-Ausprägungen möglicherweise in Ihrem bestimmten Mandanten nicht verfügbar.
Unterstützte GPU-Ausprägungen für selbstverwaltete Knoten
Bei selbstverwalteten Knoten unterstützt Kubernetes Engine die GPU-Ausprägungen, die für das OKE-Image Oracle Linux 7 (OL7) oder Oracle Linux 8 (OL8) verfügbar sind, das Sie beim Erstellen der Compute-Instanz zum Hosten des selbstverwalteten Knotens auswählen.
Aufgrund von Servicelimits und Compartment Quotas sind einige der unterstützten GPU-Ausprägungen möglicherweise in Ihrem bestimmten Mandanten nicht verfügbar.