Freigeben über


Linux Container-Support in Azure Functions

Wenn Sie planen, Ihre individuellen Funktionen in Azure Functions zu entwickeln und auszuführen, konzentrieren Sie sich meist auf den Code selbst. Azure Functions macht es leicht, nur Ihr Codeprojekt in einer Funktions-App in Azure bereitzustellen. Wenn Sie Ihre Codeprojekt in einer Funktions-App bereitstellen, die auf Linux ausgeführt wird, wird das Projekt in einem automatisch für Sie erstellten Container ausgeführt. Dieser Container wird von Functions verwaltet.

Functions unterstützt auch Funktions-App-Bereitstellungen in Containern. In einer Containerbereitstellung erstellen Sie Ihre eigene Funktions-App-Instanz in einem lokalen Docker-Container durch ein unterstütztes Basis-Image. Sie können dann diese Container -Funktions-App in einer Hosting-Umgebung in Azure bereitstellen. Die Erstellung Ihres eigenen Funktions-App-Containers ermöglicht die Personalisierung oder andernfalls die Steuerung der sofortigen Runtime-Umgebung Ihres Funktions-Codes.

Wichtig

Wenn Sie eigene Container erstellen, müssen Sie das Basisimage Ihres Containers auf das neueste unterstützte Basisimage aktualisieren. Unterstützte Basisimages für Azure Functions sind sprachspezifisch und sind unter Repositorys für Azure Functions-Basisimages verfügbar.

Das Functions-Team ist bestrebt, monatliche Updates für diese Basisimages zu veröffentlichen. Regelmäßige Updates umfassen die neuesten Updates der Nebenversion und Sicherheitskorrekturen für Functions-Runtime und -Sprachen. Sie sollten Ihren Container regelmäßig aus dem neuesten Basisimage aktualisieren und die aktualisierte Version Ihres Containers erneut bereitstellen.

Containerhosting-Optionen

Es gibt verschiedene Möglichkeiten, Ihre Container-Funktions-Apps in Azure zu hosten:

Hostingoption Vorteile
Azure Container Apps Azure Functions bietet integrierte Unterstützung für die Entwicklung, Bereitstellung und Verwaltung containerisierter Funktions-Apps in Azure Container Apps. Auf diese Weise können Sie Ihre Apps mit den gleichen Functions-Tools und -Seiten im Azure-Portal verwalten. Verwenden Sie Azure Container Apps, um Ihre Funktions-App-Container zu hosten, wenn Sie Ihre ereignisgesteuerten Funktionen in Azure in der gleichen Umgebung ausführen müssen wie andere Microservices, APIs, Websites, Workflows oder containergehostete Programme. Container Apps-Hosting ermöglicht die Ausführung Ihrer Funktionen in einer verwalteten Kubernetes-basierten Umgebung mit integrierter Unterstützung für Open-Source-Überwachung, mTLS, Dapr und KEDA. Unterstützt die Skalierung auf null und stellt ein Hostingmodell mit nutzungsbasierter Bezahlung bereit. Sie können mithilfe von Workloadprofilen auch dedizierte Hardware und sogar GPUs anfordern. Empfohlene Hostingoption zum Ausführen von containerisierten Funktions-Apps in Azure.
Kubernetes-Cluster mit Azure Arc-Unterstützung (Vorschau) Sie können Ihre Funktions-Apps in Azure Arc-fähigen Kubernetes-Clustern als Nur-Code-Bereitstellung oder in einem personalisierten Linux-Container hosten. Azure Arc ermöglicht den Anhang von Kubernetes-Clustern, damit Sie diese in Azure verwalten und konfigurieren können. Das Hosten von Azure Functions-Containern in Kubernetes-Clustern mit Azure Arc-Unterstützung befindet sich derzeit in der Vorschauphase.
Azure-Funktionen Sie können Ihre containerisierten Funktions-Apps in Azure Functions hosten, indem Sie den Container entweder in einem Elastic Premium-Plan oder einem Dedicated-Plan ausführen. Premium-Plan-Hosting bietet Ihnen die Vorteile der dynamischen Skalierung. Ziehen Sie die Verwendung des dedizierten Plan-Hostings in Betracht, um bereits vorhandene ungebrauchte App Service-Plan-Ressourcen zu nutzen.
Kubernetes Da Azure Functions-Runtime Flexibilität bzgl. des Hostings bietet, können Sie Ihre Funktions-App-Container so direkt in Kubernetes-Clustern hosten und verwalten. KEDA (Kubernetes-based Event Driven Autoscaling, [Kubernetes-basierte ereignisgesteuerte automatische Skalierung]) lässt sich nahtlos an die Azure Functions-Runtime und -Tools koppeln, um eine ereignisgesteuerte Skalierung in Kubernetes bereitzustellen. Denken Sie daran, dass das Ausführen Ihrer Container-Funktions-Apps auf Kubernetes, entweder mithilfe von KEDA oder durch direkte Bereitstellung, ein Open-Source-Angebot ist, das Sie kostenlos nutzen können, und das die bestmögliche Unterstützung durch Mitwirkende und die Community bietet. Sie sind dafür verantwortlich, Ihre eigenen Funktions-App-Container in einem Cluster zu verwalten, auch wenn die Bereitstellung in Azure Kubernetes Service (AKS) erfolgt.

Vergleich der Featureunterstützung

Wie umfassend die verschiedenen Features und Verhaltensweisen von Azure Functions unterstützt werden, wenn Ihre Funktions-App in einem Container ausgeführt wird, hängt von der ausgewählten Containerhostoption ab.

Feature/Verhalten Container Apps (integriert) Container Apps (direkt) Premium-Plan Dedizierter Plan Kubernetes
Produktsupport Ja Keine Ja Ja. No
Integration in das Functions-Portal Ja. Ohne Ja. Ja. Ohne
Ereignisgesteuerte Skalierung Ja5 Ja (Skalierungsregeln) Ja Nr. No
Maximale Skalierung (Instanzen) 1.0001  1.0001  1002  10–303  Variiert je nach Cluster
Instanzen mit Skalierung auf null Ja. Ja. No No KEDA
Ausführungszeitlimit Unbegrenzt6 Unbegrenzt6 Unbegrenzt7 Unbegrenzt8 Keine
Bereitstellung der Core-Tools func azurecontainerapps No Nr. No func kubernetes 
Revisionen Ohne Ja. Ohne Ohne Ohne
Bereitstellungsslots  Ohne Ohne Ja. Ja. Ohne
Protokollstreaming  Ja. Ja  Ja. Ja. Ohne
Konsolenzugriff  Derzeit nicht verfügbar4  Ja Ja (mit Kudu) Ja (mit Kudu) Ja (in Pods mit kubctl)
Ausgleich beim Kaltstart Maximale Anzahl Replikate Skalierungsregeln  Jederzeit bereite/Vorab aufgewärmte Instanzen  Nicht zutreffend
App Service-Authentifizierung Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Benutzerdefinierte Domänennamen  Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Zertifikate mit privaten Schlüsseln  Derzeit nicht verfügbar4  Ja. Ja. Ja. Ohne
Virtuelle Netzwerke Ja. Ja. Ja. Ja. Ja.
Verfügbarkeitszonen Ja. Ja. Ja. Ja. Ja.
Diagnostik Derzeit nicht verfügbar4  Ja Ja  Ja  Ohne
Dedizierte Hardware Ja (Workloadprofile) Ja (Workloadprofile) Ohne Ja. Ja
Dedizierte GPUs Ja (Workloadprofile) Ja (Workloadprofile) Ohne No Ja
Konfigurierbarer Arbeitsspeicher/CPU-Anzahl Ja. Ja. No Ohne Ja.
Kostenlose Option Ja Ja Nr. Nr. No
Preisübersicht Abrechnung über Container Apps Abrechnung über Container Apps Abrechnung über Premium-Plan Abrechnung über Dedicated-Plan AKS – Preise
Anforderungen an Dienstnamen 2–32 Zeichen: beschränkt auf Kleinbuchstaben, Ziffern und Bindestriche. Muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. 2–32 Zeichen: beschränkt auf Kleinbuchstaben, Ziffern und Bindestriche. Muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden. Weniger als 64 Zeichen: beschränkt auf alphanumerische Zeichen und Bindestriche Darf nicht mit einem Bindestrich beginnen oder enden. Weniger als 64 Zeichen: beschränkt auf alphanumerische Zeichen und Bindestriche Darf nicht mit einem Bindestrich beginnen oder enden. Weniger als 253 Zeichen: beschränkt auf alphanumerische Zeichen und Bindestriche Muss mit einem alphanumerischen Zeichen beginnen und enden.
  1. Bei Container-Apps ist die Standardeinstellung 10 Instanzen, Sie können jedoch die maximale Anzahl von Replikaten festlegen. Der Höchstwert beträgt 1.000. Diese Einstellung wird berücksichtigt, solange genügend Kernkontingent verfügbar ist. Wenn Sie Ihre Funktions-App im Azure-Portal erstellen, sind Sie auf 300 Instanzen beschränkt.
  2. In einigen Regionen können Linux-Apps in einem Premium-Plan auf 100 Instanzen skaliert werden. Weitere Informationen finden Sie im Artikel zum Premium-Plan.
  3. Spezifische Grenzwerte für die verschiedenen Optionen des App Service-Plans finden Sie unter App Service-Grenzwerte.
  4. Featureparität ist ein Ziel des integrierten Hostings in Azure Container Apps.
  5. Erfordert KEDA; wird von den meisten Triggern unterstützt. Weitere Informationen dazu, welche Trigger die ereignisgesteuerte Skalierung unterstützen, finden Sie unter Überlegungen zum Hosten in Container Apps.
  6. Wenn die Mindestanzahl von Replikaten auf Null festgelegt ist, hängt das Standardtimeout von den spezifischen Triggern ab, die in der App verwendet werden.
  7. Es wird kein Timeout für die maximale Ausführungsdauer erzwungen. Die Toleranzperiode für eine Funktionsausführung beträgt jedoch 60 Minuten während der Abskalierung und 10 Minuten während Plattformupdates.
  8. Hierfür muss der App Service-Plan auf Always On festgelegt werden. Während Plattformupdates wird eine Toleranzperiode von 10 Minuten gewährt.

Erste Schritte

Verwenden Sie diese Links, um mit der Verwendung von Azure Functions in Linux-Containern loszulegen:

Ich möchte... Siehe Artikel:
Meine ersten Container-Funktionen erstellen Erstellen einer Funktions-App in einem lokalen Linux-Container
Erstellen und Bereitstellen von Funktionen in Azure Container Apps Erstellen Ihrer ersten containerisierten Funktionen in Azure Container Apps
Erstellen und Bereitstellen von Container-Funktionen in Azure Functions Erstellen Ihrer ersten containerisierten Azure Functions-Funktion
Erstellen und Bereitstellen von Funktionen in Azure Arc-fähigen Kubernetes Erstellen Ihrer ersten Azure Functions-Container in Azure Arc (Vorschau)