Cloud Run ist eine vollständig verwaltete Anwendungsplattform, mit der Sie Ihren Code, Ihre Funktion oder Ihren Container auf der hoch skalierbaren Infrastruktur von Google ausführen können.
Kurz gesagt: Mit Cloud Run können Entwickler ihre Zeit in die Entwicklung von Code investieren und sehr wenig Zeit mit dem Bearbeiten, Konfigurieren und Skalieren ihres Cloud Run-Dienstes verbringen. Sie müssen keinen Cluster erstellen oder die Infrastruktur verwalten, um mit Cloud Run produktiv zu sein.
Dienste und Jobs
Bei Cloud Run kann Ihr Code alsDienst oder Job ausgeführt werden.
Die folgende Tabelle bietet einen allgemeinen Überblick über die Optionen, die von den einzelnen Cloud Run-Ressourcentypen bereitgestellt werden.
| Ressource | Beschreibung |
|---|---|
| Dienst | Reagiert auf HTTP-Anfragen, die an einen eindeutigen und stabilen Endpunkt gesendet werden, und verwendet zustandslose Containerinstanzen, die auf der Grundlage verschiedener wichtiger Messwerte automatisch skaliert werden. Außerdem reagiert der Dienst auf Ereignisse und Funktionen. |
| Job | Führt parallelisierbare Aufgaben aus, die manuell oder nach einem Zeitplan ausgeführt werden und bis zum Abschluss laufen. |
Cloud Run-Dienste
Ein Cloud Run-Dienst bietet die Infrastruktur, die zum Ausführen eines zuverlässigen HTTPS-Endpunkts erforderlich ist. Wenn Sie diesen Dienst nutzen möchten, müssen Sie dafür sorgen, dass Ihr Code einen TCP-Port überwacht und eingehende HTTP-Anfragen verarbeitet.
Das folgende Diagramm zeigt, wie ein Cloud Run-Dienst mehrere Containerinstanzen ausführt, um Webanfragen und Ereignisse von einem Client zu verarbeiten:
Ein Standarddienst umfasst die folgenden Funktionen:
- Eindeutiger HTTPS-Endpunkt für jeden Dienst
- Jeder Cloud Run-Dienst hat einen HTTPS-Endpunkt in einer eindeutigen Subdomain der Domain
*.s3nsrun.fr. Sie können auch benutzerdefinierte Domains konfigurieren. Cloud Run verwaltet TLS für Sie und unterstützt WebSockets, HTTP/2 (End-to-End) und gRPC (End-to-End). - Schnelle anfragebasierte automatische Skalierung
- Cloud Run skaliert schnell, um alle eingehenden Anfragen zu bearbeiten oder um eine erhöhte CPU-Auslastung außerhalb von Anfragen zu bewältigen, wenn die Abrechnungseinstellung auf instanzbasierte Abrechnung festgelegt ist. Ein Dienst kann schnell auf bis zu 1.000 Instanzen horizontal skaliert werden – oder sogar mehr, wenn Sie eine Kontingenterhöhung anfordern. Wenn die Nachfrage sinkt, entfernt Cloud Run inaktive Container. Wenn Sie Bedenken hinsichtlich der Kosten oder Überlastung nachgelagerter Systeme haben, können Sie die maximale Anzahl von Instanzen begrenzen.
- Optionale manuelle Skalierung
- Standardmäßig skaliert Cloud Run automatisch auf mehr Instanzen, um mehr Traffic zu verarbeiten. Sie können dieses Verhalten jedoch mit manueller Skalierung überschreiben.
- Integrierte Trafficverwaltung
Um das Risiko bei der Bereitstellung einer neuen Überarbeitung zu verringern, unterstützt Cloud Run graduelle Rollouts. Dazu können Sie eingehenden Traffic an die neueste Überarbeitung weiterleiten, ein Rollback zu einer vorherigen Überarbeitung durchführen oder den Traffic gleichzeitig auf mehrere Überarbeitungen aufteilen.
Sie können beispielsweise mit dem Senden von 1% der Anfragen an eine neue Version beginnen und diesen Prozentsatz beim Monitoring von Telemetrie erhöhen.
- Öffentliche und private Dienste
Ein Cloud Run-Dienst kann über das Internet erreichbar sein. Alternativ haben Sie folgende Möglichkeiten, den Zugriff einzuschränken:
- Zugriffsrichtlinie mit Cloud Identity and Access Management (IAM) angeben
- Einstellungen für eingehenden Traffic verwenden, um den Netzwerkzugriff einzuschränken Das ist hilfreich, wenn Sie nur internen Traffic von der VPC und internen Diensten zulassen möchten.
- Nur authentifizierte Nutzer mit Identity-Aware Proxy (IAP) zulassen.
Sie können cachefähige Assets von einem Edge-Standort in der Nähe der Clients bereitstellen, indem Sie einen Cloud Run-Dienst mit einem Content Delivery Network (CDN) wie Firebase Hosting und Cloud CDN nutzen.
Auf null und minimale Instanzen skalieren
Wenn die Abrechnung standardmäßig auf instanzbasierte Abrechnung festgelegt ist, fügt Cloud Run automatisch Instanzen hinzu und entfernt sie, um alle eingehenden Anfragen zu verarbeiten oder eine erhöhte CPU-Auslastung außerhalb von Anfragen zu bewältigen.
Auf null skalieren
Wenn keine eingehenden Anfragen an Ihren Dienst eingehen, wird auch die letzte verbleibende Instanz entfernt. Dieses Verhalten wird allgemein als Skalierung auf null bezeichnet.
Wenn eine neue Anfrage für einen Dienst ohne aktive Instanzen eingeht, erstellt Cloud Run eine neue Instanz. Dieser Prozess kann die Antwortzeit für diese ersten Anfragen erhöhen, je nachdem, wie schnell Ihr Container für die Verarbeitung von Traffic bereit ist.
Skalierungsverhalten ändern
Sie können dieses Standardverhalten mit einer der folgenden Methoden ändern:
- Mindestanzahl von Instanzen: Konfigurieren Sie Cloud Run so, dass eine Mindestanzahl von Instanzen aktiv bleibt, damit Ihr Dienst nicht auf null skaliert wird.
- Manuelle Skalierung: Verwenden Sie die manuelle Skalierung, um mehr Kontrolle über das Skalierungsverhalten Ihres Dienstes zu haben.
Nutzungsbasierte Abrechnung für Dienste
Die Skalierung auf null ist aus wirtschaftlichen Gründen attraktiv, da Ihnen die CPU und der Speicher, die einer Instanz zugewiesen werden, mit einer Genauigkeit von 100 ms in Rechnung gestellt werden. Wenn Sie keine Mindestinstanzen konfigurieren, werden Ihnen keine Kosten in Rechnung gestellt, wenn Ihr Dienst nicht verwendet wird. Es gibt eine großzügige kostenlose Stufe. Weitere Informationen finden Sie unter Preise.
Es gibt zwei Abrechnungseinstellungen, die Sie aktivieren können:
- Anfragebasiert
- Wenn eine Instanz keine Anfragen verarbeitet, werden Ihnen keine Kosten in Rechnung gestellt. Sie zahlen eine Gebühr pro Anfrage.
- Instanzbasiert
- Die Kosten werden Ihnen für die gesamte Lebensdauer einer Instanz in Rechnung gestellt. Es fallen keine Gebühren pro Anfrage an.
Es gibt eine großzügige kostenlose Stufe. Weitere Informationen finden Sie unter Preise. Unter Abrechnungseinstellungen finden Sie Informationen zum Aktivieren anfrage- oder instanzbasierter Abrechnung für Ihren Dienst.
Ein entfernbares Container-Dateisystem
Instanzen in Cloud Run können entfernt werden. Jeder Container hat ein speicherinternes, beschreibbares Dateisystem-Overlay, das nicht beibehalten wird, wenn der Container heruntergefahren wird. Cloud Run entscheidet, wann die Übermittlung von Anfragen an eine Instanz beendet und diese heruntergefahren wird, z. B. beim Herunterskalieren.
Um eine Warnung zu erhalten, wenn Cloud Run eine Instanz herunterfährt, kann Ihre Anwendung das SIGTERM-Signal abfangen. Dadurch kann Ihr Code lokale Puffer leeren und lokale Daten in einem externen Datenspeicher speichern.
Zur dauerhaften Speicherung von Dateien können Sie Cloud Storage einbinden oder ein Netzwerkdateisystem (NFS) bereitstellen.
Wann werden Cloud Run-Dienste verwendet?
Cloud Run-Dienste eignen sich hervorragend für Code, der Anfragen, Ereignisse oder Funktionen verarbeitet. Beispiel-Anwendungsfälle umfassen Folgendes:
- Websites und Webanwendungen
- Erstellen Sie Ihre Webanwendung mit Ihrem bevorzugten Stack, greifen Sie auf Ihre SQL-Datenbank zu und rendern Sie dynamische HTML-Seiten.
- APIs und Mikrodienste
- Sie können eine REST API, eine GraphQL API oder private Mikrodienste erstellen, die über HTTP oder gRPC kommunizieren.
Cloud Run-Jobs
Wenn Ihr Code funktioniert und dann beendet wird, z. B. durch ein Skript, können Sie Ihren Cloud Run-Job verwenden, um Ihren Code auszuführen. Sie können einen Job über die Befehlszeile mit der Google Cloud CLI ausführen, einen wiederkehrenden Job planen.
Array-Jobs lassen sich schneller ausführen
Ein Job kann eine einzelne Instanz starten, um Ihren Code auszuführen. Dies ist eine gängige Methode zum Ausführen eines Skripts oder Tools.
Sie können jedoch auch einen Array-Job verwenden, bei dem viele identische, unabhängige Instanzen parallel gestartet werden. Array-Jobs können schneller verarbeitet werden, die in mehrere unabhängige Aufgaben aufgeteilt werden können.
Das folgende Diagramm zeigt, dass ein Job mit sieben Aufgaben, der sequenziell ausgeführt wird, länger dauert als derselbe Job, wenn vier Instanzen unabhängige Aufgaben parallel verarbeiten können:
Wenn Sie beispielsweise 1.000 Bilder aus Cloud Storage zuschneiden und ihre Größe ändern, ist deren aufeinanderfolgende Verarbeitung langsamer als die gleichzeitige Verarbeitung bei vielen Instanzen, die Cloud Run mithilfe des automatischen Skalierens verwaltet.
Wann werden Cloud Run-Jobs verwendet?
Cloud Run-Jobs eignen sich gut zum Ausführen von Code, der Arbeit (einen Job) ausführt und nach Abschluss der Arbeit beendet wird. Hier einige Beispiele:
- Skript oder Tool
- Führen Sie ein Skript aus, um Datenbankmigrationen oder andere operative Aufgaben auszuführen.
- Array-Job
- In einem Cloud Storage-Bucket alle Dateien parallelisieren.
- Geplanter job
- In regelmäßigen Abständen Rechnungen erstellen und senden oder die Ergebnisse einer Datenbankabfrage als XML speichern und die Datei alle paar Stunden hochladen.