Windows Server-containers maken
Van toepassing op: Azure Local, versie 23H2
In dit artikel wordt beschreven hoe u Azure CLI gebruikt om een knooppuntgroep te implementeren in een bestaand AKS-cluster waarop Windows Server-containers worden uitgevoerd. Ook wordt beschreven hoe u een ASP.NET voorbeeldtoepassing in een Windows Server-container implementeert in het cluster.
Vereisten
Maak een AKS-cluster volgens de instructies in AKS-clusters maken.
Een knooppuntgroep toevoegen
Standaard wordt een Kubernetes-cluster gemaakt met een knooppuntgroep waarop Linux-containers kunnen worden uitgevoerd. U moet een andere knooppuntgroep toevoegen waarmee Windows Server-containers naast de Linux-knooppuntgroep kunnen worden uitgevoerd.
Voeg een knooppuntgroep toe met Windows-containerhosts met behulp van de az aksarc nodepool add
opdracht met de parameter --os-type Windows
. Als de SKU van het besturingssysteem niet is opgegeven, wordt de knooppuntgroep ingesteld op het standaardbesturingssysteem op basis van de Kubernetes-versie van het cluster. 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 Windows Server 2019 wilt gebruiken, geeft u de volgende parameters op:
os-type
ingesteld opWindows
.os-sku
ingesteld opWindows2019
.
- Als u Windows Server 2022 wilt gebruiken, geeft u de volgende parameters op:
os-type
ingesteld opWindows
.os-sku
ingesteld opWindows2022
(optioneel).
Met de volgende opdracht maakt u een nieuwe knooppuntgroep met de naam $mynodepool
en voegt u deze toe aan $myAKSCluster
één Windows Server 2022-knooppunt:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Verbinding maken met het AKS-cluster
U kunt nu verbinding maken met uw Kubernetes-cluster door de az connectedk8s proxy
opdracht vanaf uw lokale computer uit te voeren. Zorg ervoor dat u zich aanmeldt bij Azure voordat u deze opdracht uitvoert. Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id met behulp van de opdracht az account set .
Met deze opdracht downloadt u de kubeconfig van uw Kubernetes-cluster naar uw lokale computer en opent u een proxyverbindingskanaal naar uw on-premises Kubernetes-cluster. Het kanaal is geopend zolang deze opdracht wordt uitgevoerd. Laat deze opdracht worden uitgevoerd zolang u toegang wilt tot uw cluster. Als er een time-out optreedt voor de opdracht, sluit u het CLI-venster, opent u een nieuw venster en voert u de opdracht opnieuw uit.
U moet inzendermachtigingen hebben voor de resourcegroep die als host fungeert voor het AKS-cluster om de volgende opdracht uit te voeren:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Verwachte uitvoer:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.
Houd deze sessie actief en maak verbinding met uw Kubernetes-cluster vanaf een andere terminal-/opdrachtprompt. Controleer of u verbinding kunt maken met uw Kubernetes-cluster door de opdracht kubectl get uit te voeren. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
In de volgende voorbeelduitvoer ziet u het knooppunt dat in de vorige stappen is gemaakt. Zorg ervoor dat de status van het knooppunt gereed is:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
De toepassing implementeren
Een Kubernetes-manifestbestand definieert de gewenste status van een cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd.
U kunt een YAML-manifest gebruiken 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 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 ervoor te zorgen dat de pods van uw ASP.NET voorbeeldtoepassing worden gepland op een knooppunt waarop Windows Server-containers kunnen worden uitgevoerd.
Maak een bestand met de naam sample.yaml en kopieer dit in de volgende YAML-definitie:
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.
Implementeer de toepassing met de opdracht kubectl apply en geef de naam op van uw YAML-manifest:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
In de volgende voorbeelduitvoer ziet u dat de implementatie en service zijn 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 voortgang met behulp van de opdracht kubectl get service met het
--watch
argument.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
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
Wanneer het EXTERNE IP-adres in behandeling is voor een IP-adres, gebruikt u Ctrl-C om het kubectl-controleproces te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:
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 en de poort van de voorbeeldservice .
Als u een verbindingstime-out ontvangt bij het laden van de pagina, moet u controleren of de voorbeeld-app gereed is met behulp van de
kubectl get pods --watch
opdracht. Soms wordt de Windows-container niet gestart op het moment dat uw externe IP-adres beschikbaar is.
Knooppuntgroep verwijderen
Verwijder de knooppuntgroep met behulp van de az akshybrid nodepool delete
opdracht:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait