Distribuera Windows-program
Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server
I den här självstudien beskrivs hur du distribuerar ett ASP.NET exempelprogram i en Windows Server-container till AKS-klustret (Azure Kubernetes Service) i AKS som aktiveras av Arc och sedan testar och skalar ditt program. Du får också lära dig hur du ansluter en Windows-nod till en Active Directory-domän.
Den här självstudien förutsätter en grundläggande förståelse av Kubernetes-begrepp. Mer information finns i Kubernetes kärnbegrepp för AKS som aktiveras av Azure Arc.
Innan du börjar
Kontrollera att du uppfyller följande krav:
- Ett Azure Kubernetes Service-kluster med minst en Windows-arbetsnod igång.
- En kubeconfig-fil för åtkomst till klustret.
- AksHci PowerShell-modulen är installerad.
När du följer procedurerna:
- Kör kommandona i ett PowerShell-administratörsfönster.
- Se till att OS-specifika arbetsbelastningar hamnar på lämplig containervärd. Om kubernetes-klustret har en blandning av Linux- och Windows-arbetsnoder kan du använda antingen nodväljare eller taints och toleranser. Mer information finns i använda nodväljare och taints och toleranser.
Distribuera programmet
En Kubernetes-manifestfil definierar ett önskat tillstånd för klustret, till exempel vilka containeravbildningar som ska köras. I dessa procedurer används 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-exemplen och körs i en Windows Server-container. AKS Arc kräver att Windows Server-containrar baseras på avbildningar av Windows Server 2019.
Kubernetes-manifestfilen måste också definiera en nodväljare för att instruera 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/klistra in 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:
"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
Distribuera programmet med kommandot kubectl apply
och ange namnet på YAML-manifestet:
kubectl apply -f sample.yaml
Följande exempelutdata visar att distributionen och tjänsten 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 i dessa fall.
Om du vill övervaka förloppet använder du kubectl get service
kommandot med --watch
argumentet :
kubectl get service sample --watch
Inledningsvis visas EXTERN 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 stoppa kubectl
-övervakningsprocessen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Om du vill se exempelappen i praktiken öppnar du en webbläsare till tjänstens externa IP-adress.
Om anslutningen överskrider tidsgränsen när du försöker läsa in sidan kontrollerar du om exempelappen är klar genom att köra kubectl get pods --watch
kommandot . Ibland är den externa IP-adressen tillgänglig innan Windows-containern startar.
Skala programpoddar
Vi skapade en enskild replik av programmets klientdel. Om du vill se antalet och statusen för poddar i klustret använder du kubectl get
kommandot på följande sätt:
kubectl get pods -n default
Om du vill ändra antalet poddar i exempeldistributionen använder du kubectl scale
kommandot . I följande exempel ökar antalet klientdelspoddar till 3:
kubectl scale --replicas=3 deployment/sample
Kör kubectl get pods
igen för att kontrollera att poddarna har skapats. Efter någon minut finns de nya poddarna i klustret:
kubectl get pods -n default