Een Windows Server-container implementeren in een AKS-cluster (Azure Kubernetes Service) met behulp van Azure CLI
Azure Kubernetes Service (AKS) is een beheerde Kubernetes-service waarmee u snel clusters kunt implementeren en beheren. In dit artikel gebruikt u Azure CLI om een AKS-cluster met Windows Server-containers te implementeren. U implementeert ook een ASP.NET voorbeeldtoepassing in een Windows Server-container in het cluster.
Notitie
Om snel aan de slag te gaan met het snel inrichten van een AKS-cluster, bevat dit artikel stappen voor het implementeren van een cluster met alleen standaardinstellingen voor evaluatiedoeleinden. Voordat u een cluster implementeert dat gereed is voor productie, raden we u aan vertrouwd te raken met de referentiearchitectuur van de basislijn om na te gaan hoe dit overeenkomt met uw bedrijfsvereisten.
Voordat u begint
In deze snelstart wordt ervan uitgegaan dat u een basisbegrip hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor Azure Kubernetes Service (AKS) voor meer informatie.
- Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Voor dit artikel is versie 2.0.64 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie daar al geïnstalleerd.
- Zorg ervoor dat de identiteit die u gebruikt om uw cluster te maken de juiste minimale machtigingen heeft. Zie Toegangs- en identiteitsopties voor Azure Kubernetes Service (AKS) voor meer informatie over toegang en identiteit voor AKS.
- Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id waarin de resources moeten worden gefactureerd met behulp van de opdracht az account set . Zie Azure-abonnementen beheren - Azure CLI voor meer informatie.
Een brongroep maken
Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd. Wanneer u een resourcegroep maakt, wordt u gevraagd een locatie op te geven. Op deze locatie worden metagegevens van de resourcegroep opgeslagen en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van resources.
Maak een resourcegroep met de opdracht az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost. Voer deze opdracht en andere opdrachten in dit artikel in in een BASH-shell:
az group create --name myResourceGroup --location eastus
In de volgende voorbeelduitvoer ziet u dat de resourcegroep is gemaakt:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": null }
Een AKS-cluster maken
In deze sectie maken we een AKS-cluster met de volgende configuratie:
- Het cluster is geconfigureerd met twee knooppunten om ervoor te zorgen dat het betrouwbaar werkt. Een knooppunt is een virtuele Azure-machine (VM) waarop de Onderdelen van het Kubernetes-knooppunt en de containerruntime worden uitgevoerd.
- De
--windows-admin-password
en--windows-admin-username
parameters stellen de beheerdersreferenties in voor alle Windows Server-knooppunten in het cluster en moeten voldoen aan de wachtwoordvereisten voor Windows Server. - De knooppuntgroep maakt gebruik van
VirtualMachineScaleSets
.
Voer de volgende stappen uit om het AKS-cluster te maken met Azure CLI:
Maak een gebruikersnaam om te gebruiken als beheerdersreferenties voor de Windows Server-knooppunten in uw cluster. Met de volgende opdrachten wordt u om een gebruikersnaam gevraagd en ingesteld op WINDOWS_USERNAME voor gebruik in een latere opdracht.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
Maak een wachtwoord voor de gebruikersnaam van de beheerder die u in de vorige stap hebt gemaakt. Het wachtwoord moet minimaal 14 tekens bevatten en voldoen aan de vereisten voor wachtwoordcomplexiteit van Windows Server.
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
Maak uw cluster met behulp van de opdracht az aks create en geef de
--windows-admin-username
en--windows-admin-password
parameters op. Met de volgende voorbeeldopdracht maakt u een cluster met behulp van de waarde van WINDOWS_USERNAME die u in de vorige opdracht hebt ingesteld. U kunt ook rechtstreeks in de parameter een andere gebruikersnaam opgeven in plaats van WINDOWS_USERNAME te gebruiken.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
Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling. Soms kan het inrichten van het cluster langer duren dan een paar minuten. Wacht maximaal 10 minuten voor inrichting.
Als u een wachtwoordvalidatiefout krijgt en het wachtwoord dat u instelt, voldoet aan de lengte- en complexiteitsvereisten, probeert u de resourcegroep in een andere regio te maken. Maak vervolgens het cluster met de nieuwe resourcegroep.
Als u geen gebruikersnaam en wachtwoord voor de beheerder opgeeft bij het maken van de knooppuntgroep, wordt de gebruikersnaam ingesteld op azureuser en wordt het wachtwoord ingesteld op een willekeurige waarde. Zie de veelgestelde vragen over Windows Server voor meer informatie
De gebruikersnaam van de beheerder kan niet worden gewijzigd, maar u kunt het beheerderswachtwoord wijzigen dat uw AKS-cluster gebruikt voor Windows Server-knooppunten.
az aks update
Zie Veelgestelde vragen over Windows Server voor meer informatie.Als u een AKS-cluster wilt uitvoeren dat ondersteuning biedt voor knooppuntgroepen voor Windows Server-containers, moet uw cluster een netwerkbeleid gebruiken dat gebruikmaakt van de Azure CNI-netwerkinvoegtoepassing (geavanceerd ). Met de
--network-plugin azure
parameter wordt Azure CNI opgegeven.
Een knooppuntgroep toevoegen
Standaard wordt een AKS-cluster gemaakt met een knooppuntgroep die Linux-containers kan uitvoeren. U moet een andere knooppuntgroep toevoegen waarmee Windows Server-containers naast de Linux-knooppuntgroep kunnen worden uitgevoerd.
Windows Server 2022 is het standaardbesturingssysteem voor Kubernetes-versies 1.25.0 en hoger. Windows Server 2019 is het standaard besturingssysteem voor eerdere versies. Als u geen bepaalde SKU voor het besturingssysteem opgeeft, maakt Azure de nieuwe knooppuntgroep met de standaard-SKU voor de versie van Kubernetes die door het cluster wordt gebruikt.
- Windows-knooppuntgroep (standaard-SKU)
- Windows Server 2022-knooppuntgroep
- Windows Server 2019-knooppuntgroep
Als u de standaard-SKU van het besturingssysteem wilt gebruiken, maakt u de knooppuntgroep zonder een SKU voor het besturingssysteem op te geven. De knooppuntgroep is geconfigureerd voor het standaardbesturingssysteem op basis van de Kubernetes-versie van het cluster.
Voeg een Windows-knooppuntgroep toe met behulp van de az aks nodepool add
opdracht. Met de volgende opdracht maakt u een nieuwe knooppuntgroep met de naam npwin en voegt u deze toe aan myAKSCluster. De opdracht maakt ook gebruik van het standaardsubnet in het standaard virtuele netwerk dat is gemaakt tijdens het uitvoeren az aks create
. Er is geen SKU voor het besturingssysteem opgegeven, dus de knooppuntgroep is ingesteld op het standaardbesturingssysteem op basis van de Kubernetes-versie van het cluster:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
Verbinding maken met het cluster
U gebruikt kubectl, de Kubernetes-opdrachtregelclient, om uw Kubernetes-clusters te beheren. Als u Azure Cloud Shell gebruikt, is kubectl
al geïnstalleerd. Als u lokaal wilt installeren en uitvoeren kubectl
, roept u de opdracht az aks install-cli aan.
Configureer
kubectl
deze om verbinding te maken met uw Kubernetes-cluster met behulp van de opdracht az aks get-credentials . Bij deze opdracht worden referenties gedownload en wordt Kubernetes CLI geconfigureerd voor het gebruik van deze referenties.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Controleer de verbinding met uw cluster met behulp van de opdracht kubectl get , die een lijst met de clusterknooppunten retourneert.
kubectl get nodes -o wide
In de volgende voorbeelduitvoer ziet u alle knooppunten in het cluster. Zorg ervoor dat de status van alle knooppunten gereed is:
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
Notitie
De containerruntime voor elke knooppuntgroep wordt weergegeven onder CONTAINER-RUNTIME. De waarden van de containerruntime beginnen met
containerd://
, wat betekent dat ze elk voor de containerruntime worden gebruiktcontainerd
.
De toepassing implementeren
In een Kubernetes-manifestbestand wordt een gewenste status voor het cluster gedefinieerd, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. In dit artikel gebruikt u een manifest om alle objecten te maken die nodig zijn om de ASP.NET voorbeeldtoepassing uit te voeren in een Windows Server-container. Dit manifest bevat een Kubernetes-implementatie voor de ASP.NET voorbeeldtoepassing en een externe Kubernetes-service voor toegang tot de toepassing vanaf internet.
De ASP.NET voorbeeldtoepassing wordt geleverd als onderdeel van de .NET Framework-voorbeelden en wordt uitgevoerd in een Windows Server-container. Voor AKS moeten Windows Server-containers zijn gebaseerd op installatiekopieën van Windows Server 2019 of hoger. Het Kubernetes-manifestbestand moet ook een knooppuntkiezer definiëren om uw AKS-cluster te laten weten dat de pod van uw ASP.NET voorbeeldtoepassing moet worden uitgevoerd op een knooppunt waarop Windows Server-containers kunnen worden uitgevoerd.
Maak een bestand met de naam
sample.yaml
en kopieer de volgende YAML-definitie naar het bestand.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
Zie Implementaties en YAML-manifestmanifesten voor een uitsplitsing van YAML-manifestbestanden.
Als u het YAML-bestand lokaal maakt en opslaat, kunt u het manifestbestand uploaden naar uw standaardmap in CloudShell door de knop Bestanden uploaden/downloaden te selecteren en het bestand in uw lokale bestandssysteem te selecteren.
Implementeer de toepassing met behulp van de opdracht kubectl apply en geef de naam van uw YAML-manifest op.
kubectl apply -f sample.yaml
In de volgende voorbeelduitvoer ziet u de implementatie en service die is gemaakt:
deployment.apps/sample created service/sample created
De toepassing testen
Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes-service de front-end van de toepassing beschikbaar op internet. Dit proces kan enkele minuten duren. Soms kan het inrichten van de service langer duren dan een paar minuten. Wacht maximaal 10 minuten voor inrichting.
Controleer de status van de geïmplementeerde pods met behulp van de opdracht kubectl get pods . Zorg ervoor dat alle pods worden
Running
gebruikt voordat u doorgaat.kubectl get pods
Controleer de voortgang met behulp van de opdracht kubectl get service met het
--watch
argument.kubectl get service sample --watch
In eerste instantie wordt in de uitvoer het EXTERNE IP-adres voor de voorbeeldservice weergegeven als in behandeling:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Zodra het EXTERNAL-IP-adres is gewijzigd van in behandeling in een echt openbaar IP-adres, gebruikt u
CTRL-C
om het controleproces vankubectl
te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat is toegewezen aan de service:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Bekijk de voorbeeld-app in actie door een webbrowser te openen naar het externe IP-adres van uw service.
Resources verwijderen
Als u niet van plan bent om door te gaan met de AKS-zelfstudie, moet u uw cluster verwijderen om te voorkomen dat Azure-kosten in rekening worden gebracht.
Verwijder uw resourcegroep, containerservice en alle gerelateerde resources met behulp van de opdracht az group delete .
az group delete --name myResourceGroup --yes --no-wait
Notitie
Het AKS-cluster is gemaakt met door het systeem toegewezen beheerde identiteit (de standaardidentiteitsoptie die in deze quickstart wordt gebruikt). Het Azure-platform beheert deze identiteit, zodat deze niet hoeft te worden verwijderd.
Volgende stappen
In deze quickstart hebt u een Kubernetes-cluster geïmplementeerd en vervolgens een ASP.NET voorbeeldtoepassing geïmplementeerd in een Windows Server-container. Deze voorbeeldtoepassing is alleen bedoeld voor demodoeleinden en vertegenwoordigt niet alle aanbevolen procedures voor Kubernetes-toepassingen. Zie de richtlijnen voor AKS-oplossingen voor meer informatie over het maken van volledige oplossingen met AKS voor productie.
Als u meer wilt weten over AKS en een volledig voorbeeld van code-naar-implementatie wilt doorlopen, gaat u verder met de zelfstudie over het Kubernetes-cluster.
Azure Kubernetes Service