Skapa Windows Server-containrar
Gäller för: Azure Local, version 23H2
Den här artikeln beskriver hur du använder Azure CLI för att distribuera en nodpool till ett befintligt AKS-kluster som kör Windows Server-containrar. Den beskriver också hur du distribuerar ett ASP.NET exempelprogram i en Windows Server-container till klustret.
Förutsättningar
Skapa ett AKS-kluster enligt anvisningarna i Skapa AKS-kluster.
Lägga till en nodpool
Som standard skapas ett Kubernetes-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.
Lägg till en nodpool med Windows-containervärdar med kommandot az aksarc nodepool add
med parametern --os-type Windows
. Om operativsystemets SKU inte har angetts är nodpoolen inställd på standardoperativsystemet baserat på Kubernetes-versionen av klustret. 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 vill använda Windows Server 2019 anger du följande parametrar:
os-type
inställt påWindows
.os-sku
inställt påWindows2019
.
- Om du vill använda Windows Server 2022 anger du följande parametrar:
os-type
inställt påWindows
.os-sku
inställd påWindows2022
(valfritt).
Följande kommando skapar en ny nodpool med namnet $mynodepool
och lägger till $myAKSCluster
den i med en Windows Server 2022-nod:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Ansluta till AKS-klustret
Nu kan du ansluta till kubernetes-klustret genom att az connectedk8s proxy
köra kommandot från den lokala datorn. Kontrollera att du loggar in på Azure innan du kör det här kommandot. Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID med kommandot az account set .
Det här kommandot laddar ned kubeconfig för ditt Kubernetes-kluster till din lokala dator och öppnar en proxyanslutningskanal till ditt lokala Kubernetes-kluster. Kanalen är öppen så länge som det här kommandot körs. Låt det här kommandot köras så länge du vill komma åt klustret. Om kommandot överskrider tidsgränsen stänger du CLI-fönstret, öppnar ett nytt och kör sedan kommandot igen.
Du måste ha deltagarbehörighet för resursgruppen som är värd för AKS-klustret för att kunna köra följande kommando:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Förväntad utdata:
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.
Håll den här sessionen igång och anslut till ditt Kubernetes-kluster från en annan terminal/kommandotolk. Kontrollera att du kan ansluta till kubernetes-klustret genom att köra kommandot kubectl get. Det här kommandot returnerar en lista över klusternoderna:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Följande exempelutdata visar noden som skapades i föregående steg. Kontrollera att nodstatusen är Klar:
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
Distribuera programmet
En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras.
Du kan använda ett YAML-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 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 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 säkerställa att dina ASP.NET exempelprograms poddar är schemalagda på en nod som kan köra Windows Server-containrar.
Skapa en fil med namnet sample.yaml och kopiera i 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.
Distribuera programmet med kommandot kubectl apply och ange namnet på ditt YAML-manifest:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
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 för etablering.
Övervaka förloppet med hjälp av kommandot kubectl get service med
--watch
argumentet .kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
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 IP-adress använder du CTRL-C för att stoppa kubectl watch-processen. Följande exempelutdata visar en giltig offentlig IP-adress som har 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 den externa IP-adressen och porten för exempeltjänsten .
Om du får en tidsgräns för anslutningen när du försöker läsa in sidan bör du kontrollera att exempelappen är klar med kommandot
kubectl get pods --watch
. Ibland startas inte Windows-containern när den externa IP-adressen är tillgänglig.
Ta bort nodpool
Ta bort nodpoolen az akshybrid nodepool delete
med kommandot :
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait