Créer des conteneurs Windows Server
S’applique à : Azure Local, version 23H2
Cet article explique comment utiliser Azure CLI pour déployer un pool de nœuds sur un cluster AKS existant qui exécute des conteneurs Windows Server. Il explique également comment déployer un exemple d’application ASP.NET dans un conteneur Windows Server sur le cluster.
Prérequis
Créez un cluster AKS en suivant les instructions de la procédure de création de clusters AKS.
Ajouter un pool de nœuds
Par défaut, un cluster Kubernetes est créé avec un pool de nœuds qui peut exécuter des conteneurs Linux. Vous devez ajouter un autre pool de nœuds capable d’exécuter des conteneurs Windows Server en même temps que le pool de nœuds Linux.
Ajoutez un pool de nœuds avec des hôtes de conteneur Windows à l’aide de la az aksarc nodepool add
commande avec le paramètre --os-type Windows
. Si la référence SKU du système d’exploitation n’est pas spécifiée, le pool de nœuds est défini sur le système d’exploitation par défaut en fonction de la version Kubernetes du cluster. Windows Server 2022 est le système d’exploitation par défaut pour Kubernetes 1.25.0 et les versions ultérieures. Windows Server 2019 est le système d’exploitation par défaut pour les versions antérieures.
- Pour utiliser Windows Server 2019, spécifiez les paramètres suivants :
os-type
défini surWindows
.os-sku
défini surWindows2019
.
- Pour utiliser Windows Server 2022, spécifiez les paramètres suivants :
os-type
défini surWindows
.os-sku
défini surWindows2022
(facultatif).
La commande suivante crée un pool de nœuds nommé $mynodepool
et l’ajoute à $myAKSCluster
un nœud Windows Server 2022 :
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
Se connecter au cluster AKS
Vous pouvez maintenant vous connecter à votre cluster Kubernetes en exécutant la az connectedk8s proxy
commande à partir de votre ordinateur local. Veillez à vous connecter à Azure avant d’exécuter cette commande. Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié à l’aide de la commande az account set.
Cette commande télécharge le kubeconfig de votre cluster Kubernetes sur votre ordinateur local et ouvre un canal de connexion proxy à votre cluster Kubernetes local. Le canal est ouvert tant que cette commande s’exécute. Laissez cette commande s’exécuter aussi longtemps que vous souhaitez accéder à votre cluster. Si la commande expire, fermez la fenêtre CLI, ouvrez-en une nouvelle, puis réexécutez la commande.
Vous devez disposer d’autorisations Contributeur sur le groupe de ressources qui héberge le cluster AKS pour exécuter la commande suivante :
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Sortie attendue :
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.
Conservez cette session en cours d’exécution et connectez-vous à votre cluster Kubernetes à partir d’une autre invite de terminal/commande. Vérifiez que vous pouvez vous connecter à votre cluster Kubernetes en exécutant la commande kubectl get. Cette commande retourne une liste des nœuds de cluster :
kubectl get node -A --kubeconfig .\aks-arc-kube-config
L’exemple de sortie suivant montre le nœud créé aux étapes précédentes. Assurez-vous que l’état du nœud est Prêt :
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
Déployer l’application
Un fichier manifeste Kubernetes définit un état souhaité d’un cluster, notamment les images conteneur à exécuter.
Vous pouvez utiliser un manifeste YAML pour créer tous les objets nécessaires pour exécuter l’exemple d’application ASP.NET dans un conteneur Windows Server. Ce manifeste inclut un déploiement Kubernetes pour l’exemple d’application ASP.NET et un service Kubernetes pour accéder à l’application à partir d’Internet.
L’exemple d’application ASP.NET est fourni dans le cadre des exemples .NET Framework et s’exécute dans un conteneur Windows Server. AKS exige que les conteneurs Windows Server soient basés sur des images de Windows Server 2019 ou versions supérieures. Le fichier manifeste Kubernetes doit également définir un sélecteur de nœuds pour vous assurer que les pods de votre exemple d’application ASP.NET sont planifiés sur un nœud capable d’exécuter des conteneurs Windows Server.
Créez un fichier nommé sample.yaml et copiez-le dans la définition YAML suivante :
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
Pour obtenir une répartition des fichiers manifeste YAML, consultez Déploiements et manifestes YAML.
Déployez l’application à l’aide de la commande kubectl apply et spécifiez le nom de votre manifeste YAML :
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
L’exemple de sortie suivant montre que le déploiement et le service ont été créés avec succès :
deployment.apps/sample created
service/sample created
Test de l’application
Quand l’application s’exécute, un service Kubernetes expose le front-end de l’application sur Internet. L’exécution de ce processus peut prendre plusieurs minutes. Parfois, le provisionnement du service peut prendre plus de quelques minutes. Prévoyez 10 minutes tout au plus.
Surveillez la progression avec la commande kubectl get service et l’argument
--watch
.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Dans un premier temps, la valeur pending (en attente) s’affiche pour EXTERNAL-IP dans la sortie de l’exemple de service :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Lorsque l’adresse EXTERNAL-IP passe d’une adresse IP en attente à une adresse IP, utilisez CTRL-C pour arrêter le processus de surveillance kubectl. L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Consultez l’exemple d’application en action en ouvrant un navigateur web à l’adresse IP externe et au port de l’exemple de service.
Si vous recevez un délai d’expiration de connexion lors de la tentative de chargement de la page, vous devez vérifier que l’exemple d’application est prêt à l’aide de la
kubectl get pods --watch
commande. Il peut arriver que le conteneur Windows ne soit pas démarré au moment où votre adresse IP externe est disponible.
Supprimer un pool de nœuds
Supprimez le pool de nœuds à l’aide de la az akshybrid nodepool delete
commande :
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait