Dela via


Kombinera containrar och serverlösa metoder

Dricks

Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

Molnbaserade .NET-appar för Azure eBook täcker miniatyrbild.

Molnbaserade program implementerar vanligtvis tjänster som utnyttjar containrar och orkestrering. Det finns ofta möjligheter att exponera vissa av programmets tjänster som Azure Functions. Men med en molnbaserad app som distribueras till Kubernetes skulle det vara trevligt att använda Azure Functions i samma verktygsuppsättning. Som tur är kan du omsluta Azure Functions i Docker-containrar och distribuera dem med samma processer och verktyg som resten av din Kubernetes-baserade app.

När är det meningsfullt att använda containrar med serverlös?

Din Azure-funktion har ingen kunskap om den plattform som den distribueras på. I vissa scenarier kan du ha specifika krav och behöva anpassa den miljö där funktionskoden ska köras. Du behöver en anpassad avbildning som stöder beroenden eller en konfiguration som inte stöds av standardbilden. I dessa fall är det klokt att distribuera funktionen i en anpassad Docker-container.

När bör du undvika att använda containrar med Azure Functions?

Om du vill använda förbrukningsfakturering kan du inte köra funktionen i en container. Om du dessutom distribuerar din funktion till ett Kubernetes-kluster kommer du inte längre att dra nytta av den inbyggda skalning som tillhandahålls av Azure Functions. Du måste använda Kubernetes skalningsfunktioner, som beskrivs tidigare i det här kapitlet.

Kombinera serverlösa containrar och Docker-containrar

Om du vill omsluta en Azure-funktion i en Docker-container installerar du Azure Functions Core Tools och kör sedan följande kommando:

func init ProjectName --worker-runtime dotnet --docker

När projektet skapas innehåller det en Dockerfile och arbetskörningen som är konfigurerad till dotnet. Nu kan du skapa och testa funktionen lokalt. Skapa och kör den med hjälp av kommandona docker build och docker run . Detaljerade steg för att komma igång med att skapa Azure Functions med Docker-stöd finns i självstudien Skapa en funktion i Linux med hjälp av en anpassad avbildning .

Kombinera serverlösa och Kubernetes med KEDA

I det här kapitlet har du sett att Azure Functions-plattformen automatiskt skalas ut för att möta efterfrågan. När du distribuerar containerbaserade funktioner till AKS förlorar du dock den inbyggda skalningsfunktionen. Till undsättning kommer Kubernetes-baserade Event Driven (KEDA). Den möjliggör detaljerad autoskalning för event-driven Kubernetes workloads, inklusive containerbaserade funktioner.

KEDA tillhandahåller händelsedrivna skalningsfunktioner till Functions-körning i en Docker-container. KEDA kan skalas från noll instanser (när inga händelser inträffar) ut till n instances, baserat på belastning. Den möjliggör automatisk skalning genom att exponera anpassade mått för Kubernetes autoskalning (horisontell podd autoskalning). Genom att använda Functions-containrar med KEDA kan du replikera serverlösa funktionsfunktioner i alla Kubernetes-kluster.

Det är värt att notera att KEDA-projektet nu hanteras av Cloud Native Computing Foundation (CNCF).