Distribuera en Windows Server-container i ett AKS-kluster (Azure Kubernetes Service) med hjälp av Azure CLI
Azure Kubernetes Service (AKS) är en hanterad Kubernetes-tjänst som gör att du snabbt kan distribuera och hantera kluster. I den här artikeln använder du Azure CLI för att distribuera ett AKS-kluster som kör Windows Server-containrar. Du distribuerar också ett ASP.NET exempelprogram i en Windows Server-container till klustret.
Kommentar
För att komma igång med att snabbt etablera ett AKS-kluster innehåller den här artikeln steg för att distribuera ett kluster med standardinställningar endast i utvärderingssyfte. Innan du distribuerar ett produktionsklart kluster rekommenderar vi att du bekantar dig med vår referensarkitektur för baslinje för att överväga hur det överensstämmer med dina affärskrav.
Innan du börjar
Den här snabbstarten förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
- Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här artikeln kräver version 2.0.64 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad där.
- Kontrollera att den identitet som du använder för att skapa klustret har lämpliga minimibehörigheter. Mer information om åtkomst och identitet för AKS finns i Åtkomst- och identitetsalternativ för Azure Kubernetes Service (AKS).
- Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID där resurserna ska faktureras med kommandot az account set . Mer information finns i Hantera Azure-prenumerationer – Azure CLI.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk grupp där Azure-resurser distribueras och hanteras. När du skapar en resursgrupp uppmanas du att ange en plats. Den här platsen är platsen där resursgruppsmetadata lagras och där dina resurser körs i Azure om du inte anger en annan region när du skapar resurser.
Skapa en resursgrupp med hjälp av kommandot az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus. Ange det här kommandot och andra kommandon i den här artikeln i ett BASH-gränssnitt:
az group create --name myResourceGroup --location eastus
Följande exempelutdata visar resursgruppen som har skapats:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": null }
Skapa ett AKS-kluster
I det här avsnittet skapar vi ett AKS-kluster med följande konfiguration:
- Klustret har konfigurerats med två noder för att säkerställa att det fungerar tillförlitligt. En nod är en virtuell Azure-dator (VM) som kör Kubernetes-nodkomponenterna och containerkörningen.
- Parametrarna
--windows-admin-password
och--windows-admin-username
anger administratörsautentiseringsuppgifterna för alla Windows Server-noder i klustret och måste uppfylla lösenordskraven för Windows Server. - Nodpoolen använder
VirtualMachineScaleSets
.
Följ dessa steg för att skapa AKS-klustret med Azure CLI:
Skapa ett användarnamn som ska användas som administratörsautentiseringsuppgifter för Windows Server-noderna i klustret. Följande kommandon uppmanar dig att ange ett användarnamn och ange det till WINDOWS_USERNAME för användning i ett senare kommando.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
Skapa ett lösenord för administratörsanvändarnamnet som du skapade i föregående steg. Lösenordet måste innehålla minst 14 tecken och uppfylla kraven på lösenordskomplexitet för Windows Server.
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
Skapa klustret med kommandot az aks create och ange parametrarna
--windows-admin-username
och--windows-admin-password
. Följande exempelkommando skapar ett kluster med hjälp av värdet från WINDOWS_USERNAME som du angav i föregående kommando. Du kan också ange ett annat användarnamn direkt i parametern i stället för att använda WINDOWS_USERNAME.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azure
Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret. Ibland kan det ta längre tid än några minuter att etablera klustret. Tillåt upp till 10 minuter för etablering.
Om du får ett lösenordsverifieringsfel och lösenordet som du anger uppfyller kraven på längd och komplexitet kan du prova att skapa resursgruppen i en annan region. Försök sedan att skapa klustret med den nya resursgruppen.
Om du inte anger ett administratörsanvändarnamn och lösenord när du skapar nodpoolen anges användarnamnet till azureuser och lösenordet är inställt på ett slumpmässigt värde. Mer information finns i Vanliga frågor och svar om Windows Server
Administratörsanvändarnamnet kan inte ändras, men du kan ändra administratörslösenordet som AKS-klustret använder för Windows Server-noder med hjälp av
az aks update
. Mer information finns i Vanliga frågor och svar om Windows Server.Om du vill köra ett AKS-kluster som stöder nodpooler för Windows Server-containrar måste klustret använda en nätverksprincip som använder azure CNI-nätverksinsticksprogram (avancerat). Parametern
--network-plugin azure
anger Azure CNI.
Lägga till en nodpool
Som standard skapas ett AKS-kluster med en nodpool som kan köra Linux-containrar. Du måste lägga till en annan nodpool som kan köra Windows Server-containrar tillsammans med Linux-nodpoolen.
Windows Server 2022 är standardoperativsystemet för Kubernetes version 1.25.0 och senare. Windows Server 2019 är standardoperativsystemet för tidigare versioner. Om du inte anger en viss OS SKU skapar Azure den nya nodpoolen med standard-SKU:n för den version av Kubernetes som används av klustret.
Om du vill använda os-standard-SKU:n skapar du nodpoolen utan att ange en OS-SKU. Nodpoolen är konfigurerad för standardoperativsystemet baserat på Kubernetes-versionen av klustret.
Lägg till en Windows-nodpool med kommandot az aks nodepool add
. Följande kommando skapar en ny nodpool med namnet npwin och lägger till den i myAKSCluster. Kommandot använder också standardundernätet i det virtuella standardnätverk som skapades när du körde az aks create
. En OS-SKU har inte angetts, så nodpoolen är inställd på standardoperativsystemet baserat på Kubernetes-versionen av klustret:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
Anslut till klustret
Du använder kubectl, Kubernetes-kommandoradsklienten, för att hantera dina Kubernetes-kluster. Om du använder Azure Cloud Shell är kubectl
redan installerat. Om du vill installera och köra kubectl
lokalt anropar du kommandot az aks install-cli .
Konfigurera
kubectl
för att ansluta till kubernetes-klustret med kommandot az aks get-credentials . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Kontrollera anslutningen till klustret med kommandot kubectl get , som returnerar en lista över klusternoderna.
kubectl get nodes -o wide
Följande exempelutdata visar alla noder i klustret. Kontrollera att statusen för alla noder är Klar:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 10.224.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 10.224.0.33 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aksnpwin000000 Ready agent 20h v1.27.7 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.2159 containerd://1.6.21+azure
Kommentar
Containerkörningen för varje nodpool visas under CONTAINER-RUNTIME. Värdena för containerkörning börjar med
containerd://
, vilket innebär att de används förcontainerd
containerkörningen.
Distribuera programmet
En Kubernetes-manifestfil definierar ett önskat tillstånd för klustret, till exempel vilka containeravbildningar som ska köras. I den här artikeln använder du ett manifest för att skapa alla objekt som behövs för att köra ASP.NET exempelprogrammet i en Windows Server-container. Det här manifestet innehåller en Kubernetes-distribution för ASP.NET exempelprogram och en extern Kubernetes-tjänst för åtkomst till programmet från Internet.
Det ASP.NET exempelprogrammet tillhandahålls som en del av .NET Framework-exempel och körs i en Windows Server-container. AKS kräver att Windows Server-containrar baseras på avbildningar av Windows Server 2019 eller senare. Kubernetes-manifestfilen måste också definiera en nodväljare för att tala om för AKS-klustret att köra ASP.NET exempelprogrammets podd på en nod som kan köra Windows Server-containrar.
Skapa en fil med namnet
sample.yaml
och kopiera följande YAML-definition.apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample
En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.
Om du skapar och sparar YAML-filen lokalt kan du ladda upp manifestfilen till standardkatalogen i CloudShell genom att välja knappen Ladda upp/ladda ned filer och välja filen från det lokala filsystemet.
Distribuera programmet med kommandot kubectl apply och ange namnet på YAML-manifestet.
kubectl apply -f sample.yaml
Följande exempelutdata visar distributionen och tjänsten som har skapats:
deployment.apps/sample created service/sample created
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra. Ibland kan det ta längre tid än några minuter att etablera tjänsten. Tillåt upp till 10 minuter för etablering.
Kontrollera statusen för de distribuerade poddarna med kommandot kubectl get pods . Gör så att alla poddar är
Running
innan du fortsätter.kubectl get pods
Övervaka förloppet med hjälp av kommandot kubectl get service med
--watch
argumentet .kubectl get service sample --watch
Initialt visar utdata EXTERNAL-IP för exempeltjänsten som väntande:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
När EXTERNAL-IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du
CTRL-C
för att stoppakubectl
-övervakningsprocessen. Följande exempelutdata visar en giltig offentlig IP-adress som tilldelats tjänsten:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Se exempelappen i praktiken genom att öppna en webbläsare till tjänstens externa IP-adress.
Ta bort resurser
Om du inte planerar att gå igenom AKS-självstudien bör du ta bort klustret för att undvika azure-avgifter.
Ta bort resursgruppen, containertjänsten och alla relaterade resurser med kommandot az group delete .
az group delete --name myResourceGroup --yes --no-wait
Kommentar
AKS-klustret skapades med systemtilldelad hanterad identitet (standardidentitetsalternativet som används i den här snabbstarten). Azure-plattformen hanterar den här identiteten, så den kräver inte borttagning.
Nästa steg
I den här snabbstarten distribuerade du ett Kubernetes-kluster och distribuerade sedan ett ASP.NET exempelprogram i en Windows Server-container till det. Det här exempelprogrammet är endast i demosyfte och representerar inte alla metodtips för Kubernetes-program. Vägledning om hur du skapar fullständiga lösningar med AKS för produktion finns i AKS-lösningsvägledning.
Om du vill veta mer om AKS och gå igenom ett komplett exempel på kod-till-distribution fortsätter du till självstudiekursen för Kubernetes-klustret.
Azure Kubernetes Service