Övning – Distribuera ett program i ditt Azure Kubernetes Service-kluster

Slutförd

I den här övningen distribuerar du företagets webbplats som en testapp till Azure Kubernetes Service (AKS). Webbplatsen är en statisk webbplats med en underliggande teknikstack med HTML, CSS och JavaScript. Den får inte lika många begäranden som de andra tjänsterna och ger oss ett säkert sätt att testa distributionsalternativen.

Kommentar

Koden för webbappen är tillgänglig på den här GitHub-lagringsplatsen om du vill utforska källkoden ytterligare. Dessutom distribueras den här exempelappen endast i en Linux-nodpool.

Viktigt!

Du behöver en egen Azure-prenumeration för att slutföra den här övningen och du kan debiteras. Om du inte redan har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Skapa ett distributionsmanifest

Du skapar en distributionsmanifestfil för att distribuera programmet. Manifestfilen gör att du kan definiera vilken typ av resurs du vill distribuera och alla uppgifter som är associerade med arbetsbelastningen.

Kubernetes grupperar containrar till logiska strukturer som kallas poddar, som inte har någon intelligens. Implementeringar tillför den saknade intelligensen för att skapa din applikation. Nu ska vi skapa en distributionsfil.

  1. På datorn använder du en textredigerare som Visual Studio Code och kopierar och klistrar in följande YAML-kod i en fil med namnet deployment.yaml och sparar filen.

    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-website
    spec:
      selector:
        matchLabels:
          app: contoso-website
      template:
        metadata:
          labels:
            app: contoso-website
        spec:
          nodeSelector:
            kubernetes.io/os: linux
          containers:
            - image: mcr.microsoft.com/mslearn/samples/contoso-website
              name: contoso-website
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 250m
                  memory: 256Mi
              ports:
                - containerPort: 80
                  name: http
    
    • Två nycklar används för att definiera apiVersion och kind i manifestet som du skapar. Mer information om apiVersion och vilka värden som ska läggas till i den här nyckeln finns i den officiella Dokumentationen om Kubernetes-distributioner.
    • name är namnet på distributionen. Använd den för att identifiera och fråga distributionsinformationen när du använder kubectl.
    • Malldefinitionen definierar poddinformationen i manifestfilen. Mallen placeras i manifestfilen under avsnittet om distributionsspecifikation.
    • Nyckeln labels som tillåter distributioner att hitta och gruppera poddar.
    • I ett AKS-kluster som har Linux- och Windows-nodpooler definierar distributionsmanifestet ett nodeSelector för att instruera AKS-klustret att köra exempelprogrammets podd på en nod som kan köra Linux-containrar. Linux-noder kan inte köra Windows-containrar och vice versa.
    • Nyckeln containers är en matris med containerspecifikationer eftersom en podd kan ha en eller flera containrar. Specifikationen definierar en image, en name, resources, portsoch annan viktig information om containern. Körande poddar följer namnet contoso-website-<UUID>, där UUID är en genererad ID för att unikt identifiera alla resurser.
    • Det är en bra idé att definiera en minsta och en maximal mängd resurser som appen får använda från klustret. Du använder nyckeln resources för att ange den här informationen. I resursavsnittet kan du ange det minsta resursbeloppet som en begäran och det maximala resursbeloppet som en gräns.
    • Portarna som den här containern exponerar externt via ports nyckeln. Nyckeln ports är en matris med objekt, vilket innebär att en container i en podd kan tillgängliggöra flera portar med flera namn. Du namnger porten med hjälp name av nyckeln. Genom att namnge portar kan du ändra den tillgängliggjorda porten utan att ändra filer som refererar till den porten.
  2. Ladda upp deployment.yaml till Cloud Shell-sessionen genom att välja Hantera filer>Ladda upp.

Tillämpa manifestet

  1. I Cloud Shell kör du kommandot kubectl apply för att skicka distributionsmanifestet till klustret.

    kubectl apply -f ./deployment.yaml
    

    Kommandot bör ge ett resultat som liknar följande exempel.

    deployment.apps/contoso-website created
    
  2. Kör kommandot kubectl get deploy för att kontrollera om distributionen lyckades.

    kubectl get deploy contoso-website
    

    Kommandot bör mata ut en tabell som liknar följande exempel.

    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-website   1/1     1            1           19s
    
  3. Kör kommandot kubectl get pods för att kontrollera om podden körs.

    kubectl get pods
    

    Kommandot bör mata ut en tabell som liknar följande exempel.

    NAME                               READY   STATUS    RESTARTS   AGE
    contoso-website-1c2b3b4b5b-dzsvm   1/1     Running   0          68s