Övning – Distribuera ett program i ditt Azure Kubernetes Service-kluster
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.
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
apiVersionochkindi manifestet som du skapar. Mer information omapiVersionoch 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änderkubectl. - Malldefinitionen definierar poddinformationen i manifestfilen. Mallen placeras i manifestfilen under avsnittet om distributionsspecifikation.
- Nyckeln
labelssom tillåter distributioner att hitta och gruppera poddar. - I ett AKS-kluster som har Linux- och Windows-nodpooler definierar distributionsmanifestet ett
nodeSelectorfö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 enimage, enname,resources,portsoch annan viktig information om containern. Körande poddar följer namnetcontoso-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
resourcesfö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
portsnyckeln. Nyckelnportsä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älpnameav nyckeln. Genom att namnge portar kan du ändra den tillgängliggjorda porten utan att ändra filer som refererar till den porten.
- Två nycklar används för att definiera
Ladda upp deployment.yaml till Cloud Shell-sessionen genom att välja Hantera filer>Ladda upp.
Tillämpa manifestet
I Cloud Shell kör du kommandot
kubectl applyför att skicka distributionsmanifestet till klustret.kubectl apply -f ./deployment.yamlKommandot bör ge ett resultat som liknar följande exempel.
deployment.apps/contoso-website createdKör kommandot
kubectl get deployför att kontrollera om distributionen lyckades.kubectl get deploy contoso-websiteKommandot bör mata ut en tabell som liknar följande exempel.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-website 1/1 1 1 19sKör kommandot
kubectl get podsför att kontrollera om podden körs.kubectl get podsKommandot 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