Distribuera ett program i ditt Azure Kubernetes Service-kluster

Slutförd

Ditt företag tittar på hur man kan distribuera den molnbaserade tjänsten för videorendering. Du valde Azure Kubernetes Service (AKS) som din molnbaserade utvecklingsplattform. Med klustret konfigurerat är du redo att distribuera en av komponenterna i videorenderingsprogrammet. Du väljer att distribuera en statisk version av ditt företags webbplats för att utforska Kubernetes-distributionsprocessen.

Innan vi går igenom Kubernetes-metoden för distribution ska vi titta på några av de steg som du skulle vidta för att distribuera ett liknande program till en icke-Kubernetes-miljö.

Anta att du använder en virtuell Azure-dator (VM) som målplattform. Det första steget är att förbereda serverprogramvaran för värdhantering av programmet. Du kommer att:

  • Installera operativsystemet.
  • Se till att uppdatera operativsystemet till de senaste säkerhets- och programvarukorrigeringarna.
  • Installera och konfigurera webbserverprogramvaran.
  • Distribuera webbappen.

Upprepa den här processen för varje ny virtuell dator när du bestämmer dig för att skala ut webbplatsen för att hantera en ökad efterfrågan från kunder.

En annan metod är att köra webbplatsen på en containerbaserad plattform såsom Azure Container Instances. Du behöver inte bekymra dig om den underliggande servertekniken, men du måste konfigurera och hantera flera containrar för att kunna använda den här strategin manuellt.

Kubernetes och AKS hjälper dig att orkestrera containrar. Kubernetes-funktionerna för containerorkestrering gör det enkelt att hantera arbetsbelastningar i klustret. Du distribuerar arbetsbelastningar med hjälp av containrar som skapats från containeravbildningar för att köra dina program i ett AKS-kluster.

Här kan du utforska hur du skapar arbetsbelastningar i ditt AKS-kluster.

Vad är ett containerregister?

Med ett containerregister kan du lagra containeravbildningar på ett säkert sätt i molnet för senare distribution. Du kan betrakta containerregistret som ett arkiv som lagrar flera versioner av din containeravbildning. Varje lagrad avbildning har en tagg som har tilldelats för identifiering.

Du kan till exempel ha avbildningen contoso-website:latest, som skulle vara en annan version av avbildningen med taggen contoso-website:v1.0.0.

A diagram that shows how container images are downloaded from a container registry to a Kubernetes cluster by using a manifest file.

Containerregister kan vara offentliga eller privata. Privata register kräver autentiseringsuppgifter för att komma åt och ladda ned avbildningar och är den strategi du följer när du lagrar containeravbildningar.

Kubernetes tillåter endast att du distribuerar avbildningar som hanteras i ett containerregister. Att skapa ett privat containerregister är normalt en del av din standardstrategi för AKS-distribution.

Vad är en Kubernetes-podd?

En Kubernetes-podd grupperar containrar och program i en logisk struktur. Dessa poddar har ingen intelligens och består av en eller flera programcontainrar. Var och en har en IP-adress, nätverksregler och tillgängliggjorda portar.

Om du till exempel vill söka i alla arbetsbelastningar som är relaterade till contoso-website, frågar du klustret efter poddar med etiketten app och värdet contoso-website.

Vad är Kubernetes-distribution?

A diagram that shows a Kubernetes deployment with a label and three pods.

En Kubernetes-distribution är en utveckling av poddar. En distribution omsluter poddarna till ett intelligent objekt som gör att de kan skala ut. Du kan enkelt duplicera och skala ditt program för att stödja mer belastning utan att behöva konfigurera komplexa nätverksregler.

Med distributioner kan användare uppdatera program genom att bara ändra avbildningstaggen utan avbrottstid. När du uppdaterar en distribution inaktiverar distributionen onlineapparna en i taget i stället för att ta bort alla appar. Sedan ersätter den dem med den senaste versionen. Den här aspekten innebär att godtycklig distribution kan uppdatera poddar i den utan synlig inverkan på tillgängligheten.

Kubernetes-manifestfiler

Med en Kubernetes-manifestfil kan du beskriva arbetsbelastningar deklarativt i YAML-format och förenkla Kubernetes-objekthanteringen.

Anta att du måste distribuera en arbetsbelastning manuellt. Du måste då tänka på och hantera flera aspekter. Du behöver skapa en container, välja en specifik nod, omsluta den i en podd, köra podden, övervaka körningen och så vidare.

Manifestfiler innehåller all information som du behöver för att skapa och hantera den beskrivna arbetsbelastningen.

Vad är en Kubernetes-etikett?

Med en Kubernetes-etikett kan du gruppera Kubernetes-objekt logiskt. Dessa etiketter gör det möjligt för systemet att köra frågor mot klustret efter objekt som matchar en etikett med ett specifikt namn.

Strukturen för en manifestfil

Strukturen för manifestfiler skiljer sig beroende på vilken typ av resurs du skapar. Manifestfiler har dock gemensamma instruktioner. Dessa instruktioner definierar olika aspekter, till exempel de API:er som ska användas samt den typ av arbetsbelastning som ska skapas.

De första två posterna i alla manifestfiler har två viktiga nycklar: apiVersion och kind. Här är ett exempel på en distributionsfil.

apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating

Nyckeln apiVersion definierar DEN API-serverslutpunkt som hanterar objektet du distribuerar.

Nyckeln kind definierar den arbetsbelastning som distributionen skapar.

Andra nycklar som är gemensamma för alla filer är metadata och name. Alla Kubernetes-resurser måste ha ett namn. Namnet hamnar i nyckeln metadata.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website # This will be the name of the deployment

Gruppera objekt i en distribution

Distributioner använder en label för att hitta och gruppera poddar. Du definierar etiketten som en del av distributionens manifestfil.

Här är ett exempel. Observera värdet matchLabels, som definieras i den selector-definition som lagts till i spec-definitionen.

# deployment.yaml
# ...
spec:
  selector:
    matchLabels:
      app: contoso-website
# ...

Från och med nu har alla filer olika strukturer beroende på den typ av resurs som du instruerar Kubernetes att skapa.

Tillämpa en distributionsfil

Du distribuerar en Kubernetes-distributionsmanifestfil med hjälp av kubectl. Här är ett exempel på kommandot.

kubectl apply -f ./deployment.yaml

Testa dina kunskaper

1.

Vad är ett containerregister?

2.

Vad är en manifestfil?