Bereitstellungsoptionen und Ressourcenmodell

Container-Images bereitstellen

Cloud Run bietet mehrere Bereitstellungsoptionen. Alle Bereitstellungsoptionen führen zu einem Container-Image, das als Cloud Run-Dienst, Job oder Worker-Pool auf der vollständig verwalteten und hoch skalierbaren Infrastruktur von Cloud Run ausgeführt wird.

Bereitstellbare Container-Images

Sie können jedes Container-Image, das dem Container-Laufzeitvertrag von Cloud Run entspricht, in einem Cloud Run-Dienst, Job oder Worker-Pool bereitstellen.

Über Quellcode bereitstellen

In Cloud Run können Sie Quellcode mit einem einzigen Befehl erstellen und bereitstellen. Weitere Informationen finden Sie unter Dienste aus Quellcode bereitstellen und Worker-Pools aus Quellcode bereitstellen.

Wenn Sie aus dem Quellcode bereitstellen, wandelt Cloud Build den Code in ein Container-Image um, das in Artifact Registry gespeichert wird. Sie können Quellcode bereitstellen, der Dockerfile enthält oder eine der unterstützten Sprachlaufzeiten verwendet.

Funktionen

Sie können Funktionen, die einem einzigen Zweck dienen, bereitstellen, die auf Ereignisse reagieren, die von Ihrer Cloud-Infrastruktur und Ihren Diensten ausgegeben werden. Cloud Run löst Ihre Funktion aus, wenn ein überwachtes Ereignis ausgelöst wird.

Die Bereitstellung von Funktionen ist eine spezielle Art der Bereitstellung von Quellcode, bei der Sie nur den Funktionscode angeben müssen. Sie können Cloud Run-Funktionen mit einer Reihe von unterstützten Programmiersprachen schreiben.

Wenn Sie eine Funktion bereitstellen, wird ein Cloud Run-Dienst erstellt.

Kontinuierliche Bereitstellung von Quellcode aus Git

Mit Cloud Run können Sie die kontinuierliche Bereitstellung aus Git konfigurieren. Wie bei Quellcodebereitstellungen können Sie Quellcode bereitstellen, der ein Dockerfile enthält oder in einer der unterstützten Sprachlaufzeiten geschrieben wurde.

Die kontinuierliche Bereitstellung aus Git ist für Cloud Run-Dienste verfügbar. Sie können sie manuell in Cloud Build für Cloud Run-Jobs konfigurieren.

Cloud Run-Dienste

Dienste sind eine der wichtigsten Ressourcen von Cloud Run. Jeder Dienst befindet sich in einer bestimmten Google Cloud -Region. Zur Bereitstellung von Redundanz und Failover repliziert Cloud Run Dienste automatisch in mehreren Zonen innerhalb einer Region. Ein bestimmtes Google Cloud -Projekt kann viele Dienste in verschiedenen Regionen ausführen.

Jeder Dienst stellt einen eindeutigen Endpunkt bereit. Standardmäßig skaliert Cloud Run automatisch, um eingehende Anfragen zu verarbeiten. Bei Bedarf können Sie das Skalierungsverhalten optional in manuelle Skalierung ändern. Sie können einen Dienst aus einem Container, Repository oder Quellcode bereitstellen.

Das folgende Diagramm zeigt das Cloud Run-Ressourcenmodell für Dienste:

Cloud Run-Dienste und Überarbeitungen

Das Diagramm zeigt ein Google Cloud -Projekt mit drei Cloud Run-Diensten, Dienst A, Dienst B und Dienst C, von denen jeder mehrere Überarbeitungen hat:

  • Service A empfängt mehrere Anfragen, sodass Cloud Run mehrere Instanzen gestartet hat, um die Last zu bewältigen. Auf jeder dieser Instanzen wird nur ein Container ausgeführt, nämlich der Container der Anwendung.

  • Dienst B hat keine Anfragen, ist also inaktiv, und Cloud Run führt keine Kopien der zugehörigen Anwendung aus.

  • Dienst C hat Anfragen und wurde skaliert, um die Last zu bewältigen. Dazu wurden mehrere Instanzen erstellt. Jede Instanz enthält mehrere Container und funktioniert als unabhängiger Satz. In jeder Gruppe empfängt nur der Ingress-Container die Anfrage, aber die anderen Container helfen bei der Bearbeitung der Anfrage.

Cloud Run-Dienstüberarbeitungen

Bei jedem Deployment in einem Dienst wird eine Überarbeitung erstellt. Eine Version besteht aus einem oder mehreren Container-Images sowie Konfigurationseinstellungen wie Umgebungsvariablen, Arbeitsspeicherlimits oder einem Wert für die Nebenläufigkeit von Anfragen.

Nach dem Erstellen kann eine Überarbeitung nicht mehr geändert werden. Wenn Sie beispielsweise ein Container-Image für einen neuen Dienst bereitstellen, wird die erste Revision von Cloud Run erstellt. Wenn Sie anschließend für denselben Dienst ein anderes Container-Image bereitstellen, wird eine zweite Überarbeitung erstellt. Wenn Sie anschließend eine Umgebungsvariable festlegen, erstellt Cloud Run eine dritte Überarbeitung. Im Laufe der Zeit werden ältere, nicht verwendete Überarbeitungen von Cloud Run entfernt.

Cloud Run leitet Anfragen automatisch so schnell wie möglich an die neueste fehlerfreie Dienstüberarbeitung weiter.

Cloud Run-Dienstinstanzen

Cloud Run skaliert jede Dienstüberarbeitung, die Anfragen empfängt, automatisch auf die Anzahl der Instanzen, die zur Verarbeitung aller Anfragen nötig sind. Instanzen können viele Anfragen gleichzeitig empfangen. Mit der Einstellung für die Nebenläufigkeit von Anfragen können Sie die maximale Anzahl von Anfragen festlegen, die parallel an jede Instanz einer Version gesendet werden können.

Cloud Run-Jobs

Jeder Job befindet sich in einer bestimmten Google Cloud -Region und besteht aus einer oder mehreren Jobaufgaben, die ausgeführt werden, um einen oder mehrere Container auszuführen. Jobaufgaben sind unabhängig und können in einer bestimmten Jobausführung parallel ausgeführt werden.

Cloud Run-Jobausführungen

Wenn ein Job ausgeführt wird, wird eine Jobausführung erstellt, in der alle Jobaufgaben gestartet werden. Alle Aufgaben einer Jobausführung müssen erfolgreich abgeschlossen werden, damit die Jobausführung erfolgreich ist. Sie können Zeitlimits für Aufgaben festlegen und die Anzahl der Wiederholungen im Fall von Aufgabenfehlern angeben.

Wenn eine Aufgabe die maximale Anzahl an Wiederholungsversuchen überschreitet, werden diese Aufgabe und der Job von Cloud Run als fehlgeschlagen markiert. Standardmäßig werden maximal 100 Aufgaben parallel ausgeführt. Sie können aber auch ein niedrigeres Maximum festlegen, wenn Ihre Sicherungsressourcen, z. B. eine Datenbank, dies erfordern.

Cloud Run-Jobaufgaben

Bei jeder Jobausführung werden mehrere Aufgaben parallel ausgeführt, wobei für jede Aufgabe eine Instanz ausgeführt wird. Cloud Run versucht automatisch, fehlgeschlagene Aufgaben noch einmal auszuführen. Das hängt von der Konfiguration des Jobs für „maxRetries“ ab.

Cloud Run-Worker-Pools

Worker-Pools sind eine Cloud Run-Ressource, die speziell für Arbeitslasten ohne Anfragen wie Pull-Warteschlangen entwickelt wurde. Worker-Pools haben die folgenden Funktionen nicht:

  • Kein Endpunkt/keine URL
  • Der bereitgestellte Container muss nicht auf Anfragen an einem Port warten.
  • Kein Autoscaling

Ähnlich wie bei einem Cloud Run-Dienst wird beim Bereitstellen oder Aktualisieren eines Worker-Pools eine neue Überarbeitung erstellt.

Worker-Pool-Instanzen können bei Bedarf manuell skaliert werden, um genügend Instanzen für die Arbeitslasten zu skalieren. Bei Bedarf können Sie jedoch einen eigenen Autoscaler erstellen. Ein Beispiel hierfür ist der Kafka-Autoscaler, der die Skalierung für Arbeitslasten übernimmt, die aus der Kafka-Nachrichtenwarteschlange eingehen.