Windows-toepassingen implementeren
Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server
In deze zelfstudie wordt beschreven hoe u een ASP.NET voorbeeldtoepassing in een Windows Server-container implementeert in het AKS-cluster (Azure Kubernetes Service) in AKS waarvoor Arc is ingeschakeld en vervolgens uw toepassing test en schaalt. U leert ook hoe u een Windows-knooppunt kunt koppelen aan een Active Directory-domein.
In deze zelfstudie wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor AKS die zijn ingeschakeld door Azure Arc voor meer informatie.
Voordat u begint
Zorg ervoor dat u aan de volgende vereisten voldoet:
- Een Azure Kubernetes Service-cluster met ten minste één Windows-werkknooppunt actief en actief.
- Een kubeconfig-bestand voor toegang tot het cluster.
- De AksHci PowerShell-module is geïnstalleerd.
Wanneer u de procedures volgt:
- Voer de opdrachten uit in een PowerShell-beheerdersvenster.
- Zorg ervoor dat besturingssysteemspecifieke workloads op de juiste containerhost terechtkomen. Als uw Kubernetes-cluster een combinatie van Linux- en Windows-werkknooppunten heeft, kunt u knooppuntkiezers of taints en toleranties gebruiken. Zie het gebruik van knooppuntkiezers en taints en toleranties voor meer informatie.
De toepassing implementeren
Een Kubernetes-manifestbestand definieert een gewenste status voor het cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. In deze procedures wordt een manifest gebruikt 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. AKS Arc vereist dat Windows Server-containers zijn gebaseerd op installatiekopieën van Windows Server 2019.
Het Kubernetes-manifestbestand moet ook een knooppuntkiezer definiëren om uw 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/plak 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:
"beta.kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
requests:
cpu: .1
memory: 300M
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
Implementeer de toepassing met behulp van de kubectl apply
opdracht en geef de naam van uw YAML-manifest op:
kubectl apply -f sample.yaml
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. In deze gevallen kan het maximaal tien minuten duren.
Als u de voortgang wilt controleren, gebruikt u de kubectl get service
opdracht met het --watch
argument:
kubectl get service sample --watch
In eerste instantie wordt 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 van kubectl
te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Als u de voorbeeld-app in actie wilt zien, opent u een webbrowser naar het externe IP-adres van uw service.
Als er een time-out optreedt voor de verbinding wanneer u de pagina probeert te laden, controleert u of de voorbeeld-app gereed is door de opdracht uit te kubectl get pods --watch
voeren. Soms is het externe IP-adres beschikbaar voordat de Windows-container wordt gestart.
Toepassingspods schalen
We hebben één replica van de front-end van de toepassing gemaakt. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de kubectl get
opdracht als volgt:
kubectl get pods -n default
Gebruik de kubectl scale
opdracht om het aantal pods in de voorbeeldimplementatie te wijzigen. In het volgende voorbeeld wordt het aantal front-endpods verhoogd naar 3:
kubectl scale --replicas=3 deployment/sample
Voer opnieuw uit kubectl get pods
om te controleren of de pods zijn gemaakt. Na ongeveer een minuut zijn de extra pods beschikbaar in uw cluster:
kubectl get pods -n default