Azure Functions in Kubernetes met KEDA
De Azure Functions-runtime biedt flexibiliteit bij het hosten van waar en hoe u wilt. KEDA (Op Kubernetes gebaseerde gebeurtenisgestuurde automatische schaalaanpassing) paren naadloos met de Azure Functions-runtime en hulpprogramma's om gebeurtenisgestuurde schaal in Kubernetes te bieden.
Belangrijk
Het uitvoeren van uw in containers geplaatste functie-apps in Kubernetes, hetzij met behulp van KEDA of door directe implementatie, is een opensource-inspanning die u gratis kunt gebruiken. Ondersteuning voor best effort wordt geleverd door inzenders en vanuit de community door gebruik te maken van GitHub-problemen in de Azure Functions-opslagplaats. Gebruik deze problemen om fouten te melden en functieaanvragen te genereren. Voor beheerde Kubernetes-implementaties kunt u in plaats daarvan Azure Container Apps overwegen die als host fungeren voor Azure Functions.
Hoe kubernetes-functies werken
De Azure Functions-service bestaat uit twee belangrijke onderdelen: een runtime en een schaalcontroller. De Functions-runtime wordt uitgevoerd en voert uw code uit. De runtime bevat logica voor het activeren, registreren en beheren van functie-uitvoeringen. De Azure Functions-runtime kan overal worden uitgevoerd. Het andere onderdeel is een schaalcontroller. De schaalcontroller bewaakt de frequentie van gebeurtenissen die gericht zijn op uw functie en schaalt proactief het aantal exemplaren waarop uw app wordt uitgevoerd. Zie Azure Functions schalen en hosten voor meer informatie.
Kubernetes-functies biedt de Functions-runtime in een Docker-container met gebeurtenisgestuurd schalen via KEDA. KEDA kan inschalen naar 0 exemplaren (wanneer er geen gebeurtenissen plaatsvinden) en naar n exemplaren. Dit doet u door aangepaste metrische gegevens weer te geven voor de Kubernetes-automatische schaalaanpassing (horizontale automatische schaalaanpassing van pods). Het gebruik van Functions-containers met KEDA maakt het mogelijk om serverloze functiemogelijkheden in een Kubernetes-cluster te repliceren. Deze functies kunnen ook worden geïmplementeerd met behulp van de functie virtuele AKS-knooppunten (Azure Kubernetes Services) voor een serverloze infrastructuur.
KEDA en functies beheren in Kubernetes
Als u Functions wilt uitvoeren op uw Kubernetes-cluster, moet u het KEDA-onderdeel installeren. U kunt dit onderdeel op een van de volgende manieren installeren:
Azure Functions Core Tools: met behulp van de
func kubernetes install
opdracht.Helm: er zijn verschillende manieren om KEDA te installeren in een Kubernetes-cluster, waaronder Helm. Implementatieopties worden beschreven op de KEDA-site.
Een functie-app implementeren in Kubernetes
U kunt elke functie-app implementeren in een Kubernetes-cluster waarop KEDA wordt uitgevoerd. Omdat uw functies worden uitgevoerd in een Docker-container, heeft uw project een Dockerfile nodig. U kunt een Dockerfile maken met behulp van de --docker
optie bij het aanroepen func init
om het project te maken. Als u dit vergeten bent, kunt u altijd opnieuw bellen func init
vanuit de hoofdmap van uw Functions-project, deze keer met behulp van de --docker-only
optie, zoals wordt weergegeven in het volgende voorbeeld.
func init --docker-only
Zie de func init
naslaginformatie voor meer informatie over het genereren van Dockerfiles.
Als u een installatiekopieën wilt bouwen en uw functies wilt implementeren in Kubernetes, voert u de volgende opdracht uit:
func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>
Vervang in dit voorbeeld <name-of-function-deployment>
door de naam van de functie-app.
De implementatieopdracht doet het volgende:
- Het Dockerfile dat u eerder hebt gemaakt, wordt gebruikt om een lokale installatiekopieën voor de functie-app te bouwen.
- De lokale installatiekopieën worden gelabeld en gepusht naar het containerregister waarin de gebruiker is aangemeld.
- Er wordt een manifest gemaakt en toegepast op het cluster waarmee een Kubernetes-resource
Deployment
, eenScaledObject
resource enSecrets
, die omgevingsvariabelen bevat die zijn geïmporteerd uit uwlocal.settings.json
bestand.
Zie de func kubernetes deploy
opdracht voor meer informatie.
Een functie-app implementeren vanuit een privéregister
De bovenstaande stroom werkt ook voor privéregisters. Als u de containerinstallatiekopie uit een privéregister ophaalt, neemt u de --pull-secret
vlag op die verwijst naar het Kubernetes-geheim met de referenties voor het privéregister wanneer deze wordt uitgevoerd func kubernetes deploy
.
Een functie-app verwijderen uit Kubernetes
Nadat u een functie hebt geïmplementeerd, kunt u een functie verwijderen door de bijbehorende Deployment
, ScaledObject
een Secrets
gemaakte.
kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>
KEDA verwijderen uit Kubernetes
U kunt KEDA op een van de volgende manieren verwijderen uit uw cluster:
Azure Functions Core Tools: met behulp van de
func kubernetes remove
opdracht.Helm: bekijk de stappen voor verwijderen op de KEDA-site.
Ondersteunde triggers in KEDA
KEDA biedt ondersteuning voor de volgende Azure-functietriggers:
HTTP-triggerondersteuning
U kunt Azure Functions gebruiken die HTTP-triggers beschikbaar maken, maar KEDA beheert ze niet rechtstreeks. U kunt de KEDA prometheus-trigger gebruiken om HTTP Azure Functions van 1 naar n exemplaren te schalen.
Volgende stappen
Voor meer informatie raadpleegt u de volgende bronnen:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor