Share via


(DÉCONSEILLÉ) Gestion de conteneur DC/OS à l’aide de l’API REST Marathon

Avertissement

Le service Azure Container Service (ACS) est déprécié. Aucune nouvelle fonctionnalité ni fonction n’est ajoutée à ACS. L’ensemble des API, de l’utilisation du portail, des commandes CLI et de la documentation sont marquées comme dépréciées.

Pour plus d’informations, consultez l’annonce de la dépréciation d’Azure Container Service sur Azure.com.

Nous vous recommandons de déployer une des solutions suivantes de la Place de marché Azure :

Si vous souhaitez utiliser Kubernetes, consultez Azure Kubernetes Service.

DC/OS offre un environnement de déploiement et de mise à l’échelle des charges de travail en cluster tout en faisant abstraction du matériel sous-jacent. DC/OS sous-tend un framework qui gère la planification et l’exécution des charges de travail de calcul. Bien qu’il existe des infrastructures pour de nombreuses charges de travail courantes, ce document décrit la création et la mise à l’échelle des déploiements de conteneurs avec l’API REST Marathon.

Prérequis

Avant d’étudier ces exemples, vous devez avoir un cluster DC/OS configuré dans Azure Container Service. Vous devez également disposer d’une connectivité à distance à ce cluster. Pour plus d’informations sur ces éléments, voir les articles suivants :

Accéder aux API DC/OS

Une fois que vous êtes connecté au cluster Azure Container Service, vous pouvez accéder au contrôleur de domaine/système d’exploitation et aux API REST associées via http://localhost:local-port. Les exemples cités dans ce document partent du principe que vous créez un tunnel sur le port 80. Par exemple, les points de terminaison Marathon peuvent être atteints au début des URI à partir de http://localhost/marathon/v2/.

Pour plus d’informations sur les différentes API, consultez la documentation Mesosphere relative à l’API Marathon et à l’API Chronos, ainsi que la documentation Apache relative à l’API Mesos Scheduler.

Collecte d’informations à partir de DC/OS et de Marathon

Avant de déployer des conteneurs vers le cluster DC/OS, vous devez recueillir certaines informations sur le cluster DC/OS, notamment le nom et l’état des agents DC/OS. Pour ce faire, interrogez le point de terminaison master/slaves sur l’API REST DC/OS. Si tout se déroule correctement, la requête renvoie une liste d’agents DC/OS accompagnée de quelques-unes de leurs propriétés.

curl https://localhost/mesos/master/slaves

À présent, utilisez le point de terminaison /apps de Marathon pour vérifier les déploiements d’application actuels vers le cluster DC/OS. S’il s’agit d’un nouveau cluster, un tableau vide s’affiche pour les applications.

curl localhost/marathon/v2/apps

{"apps":[]}

Déployer un conteneur au format Docker

Vous déployez les conteneurs au format Docker via l’API REST Marathon à l’aide d’un fichier JSON décrivant le déploiement souhaité. L’exemple suivant déploie un conteneur Nginx vers un agent privé dans le cluster.

{
  "id": "nginx",
  "cpus": 0.1,
  "mem": 32.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "servicePort": 9000, "protocol": "tcp" }
      ]
    }
  }
}

Pour déployer un conteneur au format Docker, stockez le fichier JSON dans un emplacement accessible. Ensuite, exécutez la commande suivante pour déployer le conteneur. Spécifiez le nom du fichier JSON (marathon.json dans cet exemple).

curl -X POST https://localhost/marathon/v2/apps -d @marathon.json -H "Content-type: application/json"

Le résultat ressemble à ce qui suit :

{"version":"2015-11-20T18:59:00.494Z","deploymentId":"b12f8a73-f56a-4eb1-9375-4ac026d6cdec"}

À présent, si vous interrogez Marathon à propos des applications, cette nouvelle application apparaît dans la sortie.

curl localhost/marathon/v2/apps

Atteindre le conteneur

Vous pouvez vérifier que Nginx s’exécute dans un conteneur sur un des agents privés du cluster. Pour trouver l’hôte et le port sur lesquels le conteneur s’exécute, demandez à Marathon les tâches en cours d’exécution :

curl localhost/marathon/v2/tasks

Recherchez la valeur de host dans la sortie (une adresse IP similaire à 10.32.0.x) et la valeur de ports.

À présent, établissez une connexion au terminal SSH (pas une connexion par tunnel) au nom de domaine complet de gestion du cluster. Une fois la connexion établie, effectuez la demande suivante, en remplaçant les valeurs correctes de host et ports :

curl http://host:ports

Le résultat du serveur Nginx ressemble à ce qui suit :

Nginx from container

Mettre vos conteneurs à l’échelle

Vous pouvez utiliser l’API Marathon pour diminuer ou augmenter la taille des déploiements des instances d’application. Dans l’exemple précédent, vous avez déployé une instance d’une application. Nous allons augmenter la taille de déploiement pour obtenir trois instances d’une application. Pour ce faire, créez un fichier JSON avec le texte JSON suivant et stockez-le dans un emplacement accessible.

{ "instances": 3 }

À partir de la connexion par tunnel, exécutez la commande suivante pour augmenter la taille des instances de l’application.

Notes

L’URI est http://localhost/marathon/v2/apps/, suivi de l’ID de l’application que vous souhaitez mettre à l’échelle. Si vous utilisez l’exemple Nginx fourni ici, l’URI serait http://localhost/marathon/v2/apps/nginx.

curl https://localhost/marathon/v2/apps/nginx -H "Content-type: application/json" -X PUT -d @scale.json

Pour finir, interrogez le point de terminaison Marathon sur les applications. Vous constatez qu’il existe désormais trois conteneurs Nginx.

curl localhost/marathon/v2/apps

Commandes PowerShell équivalentes

Vous pouvez effectuer les mêmes opérations sur un système Windows à l’aide des commandes PowerShell.

Pour collecter des informations sur le cluster DC/OS (par exemple, le nom et l’état de l’agent), exécutez la commande suivante :

Invoke-WebRequest -Uri https://localhost/mesos/master/slaves

Vous déployez les conteneurs au format Docker via Marathon à l’aide d’un fichier JSON décrivant le déploiement souhaité. L’exemple ci-après déploie le conteneur Nginx en liant le port 80 de l’agent DC/OS au port 80 du conteneur.

{
  "id": "nginx",
  "cpus": 0.1,
  "mem": 32.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "servicePort": 9000, "protocol": "tcp" }
      ]
    }
  }
}

Pour déployer un conteneur au format Docker, stockez le fichier JSON dans un emplacement accessible. Ensuite, exécutez la commande suivante pour déployer le conteneur. Spécifiez le chemin d’accès au fichier JSON (marathon.json dans cet exemple).

Invoke-WebRequest -Method Post -Uri https://localhost/marathon/v2/apps -ContentType application/json -InFile 'c:\marathon.json'

Vous pouvez également utiliser l’API Marathon pour diminuer ou augmenter la taille des déploiements des instances d’application. Dans l’exemple précédent, vous avez déployé une instance d’une application. Nous allons augmenter la taille de déploiement pour obtenir trois instances d’une application. Pour ce faire, créez un fichier JSON avec le texte JSON suivant et stockez-le dans un emplacement accessible.

{ "instances": 3 }

Exécutez la commande suivante pour augmenter la taille des instances de l’application :

Notes

L’URI est http://localhost/marathon/v2/apps/, suivi de l’ID de l’application que vous souhaitez mettre à l’échelle. Si vous utilisez l’exemple Nginx fourni ici, l’URI serait http://localhost/marathon/v2/apps/nginx.

Invoke-WebRequest -Method Put -Uri https://localhost/marathon/v2/apps/nginx -ContentType application/json -InFile 'c:\scale.json'

Étapes suivantes