Tutoriel : Déployer une application Linux

S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server

Ce tutoriel explique comment déployer une application multiconteneur comprenant un front-end web et une base de données Redis instance sur votre cluster Kubernetes dans AKS activé par Azure Arc. Vous découvrez également comment tester et mettre à l’échelle votre application.

Ce didacticiel suppose que vous disposez de connaissances de base sur les concepts de Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes.

Avant de commencer

Vérifiez que vous disposez des exigences suivantes :

  • Un cluster AKS avec au moins un nœud Worker Linux opérationnel.
  • Un fichier kubeconfig pour accéder au cluster.
  • Le module AksHci PowerShell est installé. Pour plus d’informations, consultez Install-AksHci.

Lorsque vous effectuez les procédures du didacticiel :

  • Exécutez les commandes dans une fenêtre PowerShell ouverte avec des privilèges d’administration.
  • Vérifiez que les charges de travail spécifiques au système d’exploitation se trouvent sur l’hôte de conteneur approprié. Si votre cluster Kubernetes a un mélange de nœuds Worker Linux et Windows, vous pouvez utiliser des sélecteurs de nœuds ou des teintes et des tolérances. Pour plus d’informations, consultez les sélecteurs de nœud et les teintes et tolérances.

Notes

Le déploiement d’un cluster cible qui partage un réseau avec un autre cluster cible peut entraîner des conflits d’adresses IP de l’équilibreur de charge. Des conflits d’adresses IP peuvent se produire si vous déployez deux charges de travail qui utilisent des ports différents dans des clusters cibles partageant le même AksHciClusterNetwork objet. En raison de la façon dont les adresses IP et les mappages de ports sont alloués à l’intérieur du proxy haute disponibilité, cela peut entraîner l’affectation d’adresses IP en double. Si cela se produit, une ou les deux charges de travail peuvent rencontrer des problèmes de connectivité réseau aléatoires jusqu’à ce que vous redéployez vos charges de travail. Lorsque vous redéployez vos charges de travail, vous pouvez utiliser le même port, qui affecte une adresse IP de service à chaque charge de travail, ou vous pouvez redéployer vos charges de travail sur des clusters cibles qui utilisent des objets différents AksHciClusterNetwork .

Déployer l’application

Un fichier manifeste Kubernetes définit un état souhaité pour le cluster, par exemple les images conteneur à exécuter. Ce tutoriel utilise un manifeste pour créer tous les objets nécessaires à l’exécution de l’application de vote Azure. Ce manifeste inclut deux déploiements Kubernetes : l’un pour les exemples d’applications Azure Vote Python et l’autre pour un instance Redis. Deux services Kubernetes sont également créés : un service interne pour le instance Redis et un service externe pour accéder à l’application Vote Azure à partir d’Internet.

Create un fichier nommé azure-vote.yaml et copiez/collez la définition YAML suivante :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-front
        image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

Déployez l’application à l’aide de la kubectl apply commande et spécifiez le nom de votre manifeste YAML :

kubectl apply -f azure-vote.yaml

L’exemple de sortie suivant montre les déploiements et les services qui ont été créés avec succès :

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Tester 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.

Pour surveiller la progression, utilisez la kubectl get service commande avec l’argument --watch :

kubectl get service azure-vote-front --watch

Initialement, l’ADRESSE IP EXTERNE pour le service azure-vote-front s’affiche comme étant en attente :

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27      <pending>     80:30572/TCP   22m

Lorsque l’adresse EXTERNAL-IP passe de en attente à une adresse IP publique réelle, utilisez CTRL-C pour arrêter le kubectl processus watch. L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   24m

Pour voir l’application Azure Vote en action, ouvrez un navigateur web en utilisant l’adresse IP externe de votre service.

Capture d’écran de la page d’accueil de l’application Azure Voting App, déployée sur un cluster Kubernetes dans Azure.

Mettre à l’échelle les pods d’application

Nous avons créé une réplica unique du front-end de l’application de vote Azure et de l’instance Redis. Pour voir le nombre et l’état des pods de votre cluster, utilisez la commande kubectl get :

kubectl get pods -n default

L’exemple de sortie suivant montre un pod de serveur frontal et un pod de serveur principal :

NAME                                READY     STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1       Running   0          25m
azure-vote-front-84c8bf64fc-cdq86   1/1       Running   0          25m

Pour changer le nombre de pods dans le déploiement azure-vote-front, utilisez la commande kubectl scale. L’exemple suivant augmente le nombre de pods de serveur frontal à 5 :

kubectl scale --replicas=5 deployment/azure-vote-front

Réexécutez kubectl get pods pour vérifier que des pods supplémentaires ont été créés. Au bout d’une minute environ, les pods supplémentaires sont disponibles dans votre cluster :

kubectl get pods -n default
Name                                READY   STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1     Running   0          31m
azure-vote-front-84c8bf64fc-cdq86   1/1     Running   0          31m
azure-vote-front-84c8bf64fc-56h64   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-djkp8   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-jmmvs   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-znc6z   1/1     Running   0          80s

Étapes suivantes

Utiliser Azure Monitor pour surveiller votre cluster et votre application