Tous les produits
Search
Centre de documentation

Container Compute Service:Créer un workload sans état Deployment

Dernière mise à jour :Aug 12, 2026

Container Compute Service (ACS) permet de créer des applications sans état à l'aide d'images conteneur, de modèles d'orchestration YAML ou des outils en ligne de commande kubectl. Cette rubrique prend l'exemple d'une application Nginx pour illustrer la création d'une application sans état dans un cluster ACS.

Console

Création à partir d'une image

Étape 1 : Configurer les informations de base de l'application

  1. Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Create from Image.

  4. Dans l'assistant , configurez les paramètres de base de votre application.

    Élément de configuration

    Description

    Saisissez un nom pour l'application.

    Nombre de pods dans l'application. La valeur par défaut est 2.

    Sélectionnez .

    Ajoutez un libellé pour identifier cette application.

    Ajoutez une annotation à l'application.

    Instance Type

    Sélectionnez un type de calcul. Pour plus de détails sur les types de calcul, consultez Présentation des instances de pod ACS.

    QoS Type

    Sélectionnez une classe de qualité de service (QoS).

    Correspondance entre le type de calcul et la qualité de la puissance de calcul

    Type de calcul (libellé)

    Classes de qualité de puissance de calcul prises en charge (libellés)

    Usage général (general-purpose)

    Default (default), BestEffort (best-effort)

    Optimisé pour les performances (performance)

    Default (default), BestEffort (best-effort)

    Type GPU (gpu)

    Default (default), BestEffort (best-effort)

    GPU réseau haute performance (gpu-hpn)

    Default (default)

    Pour plus d'informations, consultez Définitions des classes QoS.

  5. Cliquez sur pour accéder à l'assistant .

Étape 2 : Configurer les conteneurs

Sur la page de l'assistant , configurez l'image du conteneur, les ressources, les ports, les variables d'environnement, les vérifications d'état, le cycle de vie, les volumes et la journalisation.

Remarque

Pour ajouter plusieurs conteneurs au pod, cliquez sur à côté de l'onglet Container 1.

  1. Dans la section , complétez la configuration de base du conteneur.

    Élément de configuration

    Description

    • Sélectionner une image

      Cliquez sur pour choisir l'image requise.

      • Container Registry Enterprise Edition : sélectionnez une image Enterprise Edition hébergée dans Alibaba Cloud Container Registry (ACR). Vous devez sélectionner la région et l'instance ACR où réside l'image. Pour plus d'informations sur ACR, consultez Qu'est-ce que Container Registry ?.

      • Container Registry Personal Edition (doit être activé au préalable) : sélectionnez une image Personal Edition hébergée dans ACR. Vous devez sélectionner la région et l'instance ACR où réside l'image.

      • Artifact center : comprend des images de système d'exploitation de base pour les applications conteneurisées, des images d'environnement d'exécution de langages et des images liées à l'IA et au Big Data. Cet exemple utilise une image Nginx provenant d'Artifact Center. Pour plus d'informations, consultez Artifact Center.

    • (Facultatif) Définir la politique de récupération d'image

      Dans la liste déroulante , sélectionnez une politique de récupération. Par défaut, aucune politique n'est définie et Kubernetes utilise IfNotPresent.

      • : si l'image existe déjà localement (précédemment récupérée sur l'hôte), elle ne sera pas téléchargée à nouveau. Sinon, l'image sera récupérée.

      • : récupère toujours l'image lors du déploiement ou de la mise à l'échelle, en ignorant toute copie locale.

      • : utilise uniquement l'image locale.

    • (Facultatif) Définir un secret de récupération d'image

      Cliquez sur pour accéder en toute sécurité aux images privées.

      • Pour les instances ACR Personal Edition, vous pouvez récupérer des images conteneur en définissant un secret de récupération d'image. Pour plus d'informations, consultez Gérer les secrets.

      • Pour les instances ACR Enterprise Edition, vous pouvez récupérer des images sans mot de passe grâce au composant passwordless. Pour plus de détails, consultez Récupérer des images ACR sans mot de passe.

    Définissez les quotas de ressources pour le conteneur.

    • CPU : spécifiez les valeurs de demande et de limite CPU. Par défaut, la demande est égale à la limite, et la facturation utilise le mode paiement à l'utilisation. Si vous définissez une limite différente via YAML, la demande sera écrasée pour correspondre à la limite. Pour plus de détails, consultez Spécifications des ressources.

    • : spécifiez les valeurs de demande et de limite de mémoire. Par défaut, la demande est égale à la limite, et la facturation utilise le mode paiement à l'utilisation. Si vous définissez une limite différente via YAML, la demande sera écrasée pour correspondre à la limite. Pour plus de détails, consultez Spécifications des ressources.

    Interactive Session

    (Facultatif) Configurez les options de démarrage du conteneur.

    • stdin : envoie l'entrée de la console au conteneur.

    • tty : attache la console d'entrée standard comme entrée de console du conteneur.

    Remarque

    En règle générale, stdin et tty sont sélectionnés ensemble pour lier le terminal (tty) à l'entrée standard du conteneur (stdin). Par exemple, un programme interactif lit l'entrée utilisateur depuis stdin et affiche la sortie sur le terminal.

    (Facultatif) Sélectionnez cette option pour créer un conteneur d'initialisation.

    Les conteneurs d'initialisation fournissent un mécanisme permettant de bloquer ou de retarder le démarrage des conteneurs d'application jusqu'à ce qu'ils réussissent. Après une exécution réussie, les conteneurs d'application du pod démarrent en parallèle. Par exemple, vous pouvez utiliser des conteneurs d'initialisation pour vérifier la disponibilité des services dépendants. Les conteneurs d'initialisation peuvent inclure des utilitaires ou des scripts d'installation absents de l'image d'application pour initialiser l'environnement d'exécution, par exemple en définissant des paramètres de noyau ou en générant des fichiers de configuration. Pour plus d'informations, consultez Init Containers.

  2. (Facultatif) Dans la section , cliquez sur pour configurer les ports du conteneur.

    Élément de configuration

    Description

    Spécifiez un nom pour le port du conteneur.

    Spécifiez le port d'accès exposé du conteneur. Le numéro de port doit être compris entre 1 et 65535.

    Les protocoles pris en charge sont TCP et UDP.

  3. (Facultatif) Dans la section , cliquez sur pour configurer les variables d'environnement.

    Vous pouvez configurer des variables d'environnement pour le pod à l'aide de paires clé-valeur afin d'ajouter des indicateurs d'environnement ou de transmettre une configuration. Pour plus d'informations, consultez Variables d'environnement de pod.

    Paramètre

    Description

    Définissez le type de variable d'environnement :

    ConfigMap et Secret permettent de référencer des fichiers entiers.

    Cet exemple utilise un Secret. Lorsque vous sélectionnez le type et choisissez un Secret cible, tous les fichiers de ce Secret sont référencés par défaut. Après avoir sélectionné Secret, saisissez un Nom de variable et sélectionnez le nom du Secret correspondant ainsi que la clé dans les deux listes déroulantes de droite.

    Le YAML correspondant référence le Secret entier :

    envFrom:
      - secretRef:
          name: test

    Définissez le nom de la variable d'environnement.

    Définissez la valeur de la variable référencée.

  4. (Facultatif) Dans la section , activez , et selon vos besoins.

    • Liveness probe : une sonde de vivacité vérifie si un conteneur est en cours d'exécution. Si la sonde échoue plusieurs fois, le kubelet redémarre le conteneur. Cela peut aider à résoudre des problèmes tels que les blocages où le conteneur s'exécute mais ne peut pas progresser.

    • Readiness probe : une sonde de préparation vérifie si un conteneur est prêt à accepter du trafic. Un Pod n'est ajouté comme backend à un Service qu'après la réussite de sa sonde de préparation.

    • Startup Probes : ces sondes ne sont exécutées qu'au démarrage d'un conteneur pour vérifier s'il a démarré avec succès. Les Liveness Probes et Readiness Probes ne sont exécutées qu'après la réussite de la sonde de démarrage.

    Pour plus d'informations, consultez Configurer les sondes de vivacité, de préparation et de démarrage.

    Paramètre

    Description

    Envoie une requête HTTP GET au conteneur. Les paramètres pris en charge incluent les éléments suivants :

    • : HTTP ou HTTPS.

    • : chemin d'accès au serveur HTTP.

    • : port exposé du conteneur ou nom du port. Le numéro de port doit être compris entre 1 et 65535.

    • : en-têtes de requête personnalisés dans la requête HTTP. HTTP autorise les en-têtes en double. Configurez-les sous forme de paires clé-valeur.

    • : le paramètre initialDelaySeconds spécifie le nombre de secondes à attendre après le démarrage du conteneur avant d'effectuer la première sonde. La valeur par défaut est de 3 secondes.

    • : le paramètre periodSeconds spécifie l'intervalle de temps entre les sondes. La valeur par défaut est de 10 secondes. Le minimum est de 1 seconde.

    • : le paramètre timeoutSeconds spécifie la durée d'expiration de la sonde. La valeur par défaut est de 1 seconde. Le minimum est de 1 seconde.

    • : nombre minimal de sondes réussies consécutives requises après un échec pour marquer le conteneur comme sain. La valeur par défaut est 1. Le minimum est 1. Pour les sondes de vivacité, cette valeur doit être 1.

    • : nombre minimal de sondes échouées consécutives requises après un succès pour marquer le conteneur comme non sain. La valeur par défaut est 3. Le minimum est 1.

    Ouvre un socket TCP vers le conteneur. Kubelet tente d'ouvrir un socket sur le port spécifié. En cas de succès, le conteneur est considéré comme sain ; sinon, il est marqué comme ayant échoué. Les paramètres pris en charge incluent les éléments suivants :

    • : port exposé du conteneur ou nom du port. Le numéro de port doit être compris entre 1 et 65535.

    • : le paramètre initialDelaySeconds spécifie le nombre de secondes à attendre après le démarrage du conteneur avant d'effectuer la première sonde. La valeur par défaut est de 15 secondes.

    • : le paramètre periodSeconds spécifie l'intervalle de temps entre les sondes. La valeur par défaut est de 10 secondes. Le minimum est de 1 seconde.

    • : le paramètre timeoutSeconds spécifie la durée d'expiration de la sonde. La valeur par défaut est de 1 seconde. Le minimum est de 1 seconde.

    • : nombre minimal de sondes réussies consécutives requises après un échec pour marquer le conteneur comme sain. La valeur par défaut est 1. Le minimum est 1. Pour les sondes de vivacité, cette valeur doit être 1.

    • : nombre minimal de sondes échouées consécutives requises après un succès pour marquer le conteneur comme non sain. La valeur par défaut est 3. Le minimum est 1.

    Exécute une commande à l'intérieur du conteneur pour vérifier son état. Les paramètres pris en charge incluent les éléments suivants :

    • : commande utilisée pour vérifier l'état du conteneur.

    • : le paramètre initialDelaySeconds spécifie le nombre de secondes à attendre après le démarrage du conteneur avant d'effectuer la première sonde. La valeur par défaut est de 5 secondes.

    • : le paramètre periodSeconds spécifie l'intervalle de temps entre les sondes. La valeur par défaut est de 10 secondes. Le minimum est de 1 seconde.

    • : le paramètre timeoutSeconds spécifie la durée d'expiration de la sonde. La valeur par défaut est de 1 seconde. Le minimum est de 1 seconde.

    • : nombre minimal de sondes réussies consécutives requises après un échec pour marquer le conteneur comme sain. La valeur par défaut est 1. Le minimum est 1. Pour les sondes de vivacité, cette valeur doit être 1.

    • : nombre minimal de sondes échouées consécutives requises après un succès pour marquer le conteneur comme non sain. La valeur par défaut est 3. Le minimum est 1.

  5. (Facultatif) Dans la section , configurez le cycle de vie du conteneur.

    Vous pouvez configurer des commandes de pré-démarrage, des gestionnaires post-démarrage et des gestionnaires pré-arrêt pour le cycle de vie du conteneur. Pour plus de détails, consultez Configurer le cycle de vie.

    Paramètre

    Description

    Start

    Spécifiez une commande et ses arguments à exécuter avant le démarrage du conteneur.

    Post-start Hook

    Spécifiez une commande à exécuter après le démarrage du conteneur.

    Pre-stop Hook

    Spécifiez une commande à exécuter avant l'arrêt du conteneur.

  6. (Facultatif) Dans la section , montez des volumes sur le conteneur.

    • Stockage local : montez des ConfigMaps, des Secrets ou des répertoires temporaires sur des chemins de conteneur. Pour plus d'informations, consultez volumes.

    • Stockage cloud : prend en charge les disques cloud, NAS, etc. Pour plus de détails, consultez Présentation du stockage.

  7. (Facultatif) Dans la section , configurez et .

    Paramètre

    Description

    Paramètres de collecte

    • : crée un Logstore correspondant dans Simple Log Service pour stocker les journaux collectés.

    • : prend en charge stdout et les journaux texte.

      • Stdout : collecte les journaux de sortie standard du conteneur.

      • Journaux texte : collecte les journaux depuis un chemin spécifié à l'intérieur du conteneur. Cet exemple collecte tous les journaux texte sous /var/log/nginx et prend en charge les caractères génériques.

    Tags personnalisés

    Vous pouvez également définir des tags personnalisés. Une fois configurés, ces tags sont inclus avec les journaux du conteneur. Les tags personnalisés vous aident à catégoriser les journaux pour faciliter les statistiques et le filtrage lors de l'analyse.

  8. Cliquez sur pour accéder à l'assistant .

Étape 3 : Compléter la configuration avancée

Sur la page de l'assistant , configurez l'accès, la mise à l'échelle, la planification et les libellés/annotations.

  1. Dans la section , configurez la manière d'exposer les pods backend.

    Cet exemple utilise ClusterIP et Ingress pour créer une application Nginx accessible publiquement.

    • Configurer un Service : cliquez sur à côté de pour définir les paramètres du service.

      Développer pour voir les détails de la configuration du service

      Élément de configuration

      Description

      Saisissez un nom de service. Cet exemple utilise nginx-svc.

      Sélectionnez le type de service, qui détermine la manière dont le service est accessible. Cet exemple sélectionne .

      • : expose le service sur une IP interne au sein du cluster. Les services de ce type ne sont accessibles que depuis l'intérieur du cluster. Il s'agit du ServiceType par défaut.

        Remarque

        Lorsque le type de service est , vous pouvez configurer un Headless Service.

      • : utilise Alibaba Cloud Server Load Balancer (SLB) pour exposer le service. Vous pouvez choisir un accès public ou interne. Alibaba Cloud SLB route le trafic vers les services ClusterIP.

        • Créer un nouveau SLB : cliquez sur pour modifier les spécifications du SLB.

        • Utiliser un SLB existant : sélectionnez une instance SLB dans la liste.

        Remarque

        Le type LoadBalancer prend en charge la création d'un nouveau SLB ou la réutilisation d'un SLB existant, mais avec les limitations suivantes :

        • L'utilisation d'une instance SLB existante écrase ses écouteurs actuels.

        • Les instances SLB créées par Kubernetes via des Services ne peuvent pas être réutilisées (pour éviter toute suppression accidentelle). Seules les instances SLB créées manuellement dans la console (ou via OpenAPI) peuvent être réutilisées.

        • Plusieurs Services réutilisant le même SLB ne doivent pas partager le même port d'écouteur frontal pour éviter les conflits.

        • Lors de la réutilisation d'un SLB, Kubernetes utilise les noms d'écouteur et les noms de groupe vServer comme identifiants uniques. Ne modifiez pas ces noms.

        • La réutilisation d'un SLB entre clusters n'est pas prise en charge.

      Ajoutez des ports de service et de conteneur. Le port du conteneur doit correspondre au port exposé par les pods backend.

      External Traffic Policy

      • Local : route le trafic uniquement vers les pods situés sur le même nœud.

      • Cluster : route le trafic vers les pods situés sur n'importe quel nœud.

      Remarque

      Vous pouvez définir la External Traffic Policy uniquement lorsque le type de service est .

      Ajoutez une annotation pour configurer les paramètres SLB. Par exemple, définir service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth: 20 limite la bande passante du service à 20 Mbit/s pour contrôler le trafic.

      Ajoutez un libellé pour identifier ce service.

    • Configurer Ingress : cliquez sur à côté de pour définir les règles de routage des pods backend.

      Développer pour voir les détails de la configuration Ingress

      Remarque

      Lors de la création d'une application à partir d'une image, vous ne pouvez créer qu'un seul Ingress par service. Cet exemple utilise un nom d'hôte virtuel comme domaine de test. Ajoutez un mappage de domaine (endpoint Ingress + domaine Ingress) à votre fichier Hosts. En production, utilisez un domaine déclaré ICP.

      101.37.XX.XX   foo.bar.com    # Ingress IP.

      Paramètre

      Description

      Saisissez un nom Ingress. Cet exemple utilise alb-ingress.

      Les règles Ingress définissent comment le trafic entrant atteint les services du cluster. Pour plus d'informations, consultez Démarrage rapide ALB Ingress.

      • Domain Name : saisissez le domaine Ingress.

      • : spécifiez le chemin URL pour l'accès au service. La valeur par défaut est le chemin racine /. Chaque chemin correspond à un service backend. Alibaba Cloud SLB transfère le trafic uniquement si les requêtes entrantes correspondent à la fois au domaine et au chemin.

      • : sélectionnez le nom du service et le port.

      • TLS : configurez le routage sécurisé.

      Cet exemple utilise le domaine de test foo.bar.com et définit le service sur nginx-svc.

      Canary Release

      Activez le déploiement canari. Nous recommandons de sélectionner car l'édition Alibaba Cloud n'est plus maintenue.

      Ingress Class

      Spécifiez une classe Ingress personnalisée.

      Définissez des clés et valeurs d'annotation personnalisées, ou recherchez des annotations par nom. Cliquez sur Add pour saisir des paires clé-valeur d'annotation. Pour les annotations Ingress, consultez Annotations.

      Cliquez sur Add pour saisir les clés et valeurs de libellé qui identifient les caractéristiques de cet Ingress.

  2. (Facultatif) Dans la section , activez pour répondre aux demandes de charge variables.

    • Container Compute Service prend en charge la mise à l'échelle automatique basée sur l'utilisation du CPU et de la mémoire des pods.

      Remarque

      Pour activer la mise à l'échelle automatique, vous devez spécifier les ressources demandées pour le conteneur. Sinon, la mise à l'échelle automatique ne fonctionnera pas.

      Élément de configuration

      Description

      Prend en charge le CPU et la mémoire. Doit correspondre au type de ressource demandé.

      Trigger Condition

      Seuil de pourcentage d'utilisation des ressources. Lorsqu'il est dépassé, le système effectue une mise à l'échelle horizontale (scale out).

      Nombre maximal de conteneurs pouvant être ajoutés par mise à l'échelle pour ce type de charge.

      Limite inférieure pour la réduction de ce workload.

    • Container Compute Service prend également en charge la mise à l'échelle planifiée (CronHPA) pour ajuster automatiquement les clusters Kubernetes à des heures spécifiques. Avant d'activer la mise à l'échelle planifiée, installez le composant ack-kubernetes-cronhpa-controller. Pour plus de détails, consultez Mise à l'échelle planifiée (CronHPA).

  1. (Facultatif) Dans la section , cliquez sur Add pour définir les libellés et annotations des pods.

  2. Cliquez sur .

Étape 4 : Consulter les informations de l'application

Après une création réussie, vous êtes redirigé vers la page de confirmation. Cliquez sur pour accéder à la page de détails du Deployment.

Vous pouvez également consulter les informations du Deployment sur la page . Cliquez sur le nom du Deployment cible ou sur dans la colonne pour accéder à la page de détails de l'application.

Création à l'aide de YAML

Dans l'orchestration de modèles ACS, vous définissez les objets de ressources requis pour votre application et les combinez en une application complète à l'aide de mécanismes tels que les sélecteurs de libellés.

Cet exemple montre comment créer une application Nginx à l'aide d'un modèle d'orchestration contenant un Deployment et un Service. Le Deployment crée des ressources de pod, et le Service se lie à ces pods, formant une application Nginx complète.

  1. Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Create from YAML dans le coin supérieur droit.

  4. Sur la page , configurez le modèle et cliquez sur .

    • : ACS fournit des exemples YAML Kubernetes pour divers types de ressources afin de vous aider à déployer rapidement. Vous pouvez également écrire votre propre YAML conformément aux normes Kubernetes.

    • : définissez rapidement un modèle YAML à l'aide de cette fonctionnalité.

    • : importez un modèle d'orchestration existant.

    • : enregistrez votre modèle d'orchestration configuré.

    Voici un exemple de YAML pour une application Nginx. Cet exemple crée rapidement un Deployment Nginx et un service LoadBalancer de type CLB.

    Remarque
    • ACS prend en charge l'orchestration YAML Kubernetes. Utilisez le séparateur --- pour définir plusieurs objets de ressources dans un seul modèle.

    • (Facultatif) Lors du montage de volumes via Volume, les fichiers du répertoire de montage sont écrasés par défaut. Pour conserver les fichiers existants, configurez le paramètre subPath.

    Développer pour voir le YAML Nginx

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
        name: nginx-deployment-basic
        labels:
          app: nginx
    spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
              alibabacloud.com/compute-class: general-purpose 
              alibabacloud.com/compute-qos: default
          spec:
            containers:
            - name: nginx
              image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest #replace it with your exactly <image_name:tags>
              ports:
              - containerPort: 80
              volumeMounts:
              - name: nginx-config
                mountPath: /etc/nginx/nginx.conf 
                subPath: nginx.conf   #set subPath.    
            volumes:
            - name: nginx-config
              configMap:
                name: nginx-conf
    ---
    apiVersion: v1     
    kind: Service
    metadata:
       name: my-service1        #to specify your service name
       labels:
         app: nginx
    spec:
       selector:
         app: nginx             #change label selector to match your backend pod
       ports:
       - protocol: TCP
         name: http
         port: 30080          
         targetPort: 80
       type: LoadBalancer       
    ---
    #ConfigMap for volume
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-conf
      namespace: default
    data:
      nginx.conf: |-
       user  nginx;
       worker_processes  1;
       error_log  /var/log/nginx/error.log warn;
       pid        /var/run/nginx.pid;
       events {
            worker_connections  1024;
        }
        http {
            include       /etc/nginx/mime.types;
            default_type  application/octet-stream;
            log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
            access_log  /var/log/nginx/access.log  main;
            sendfile        on;
            #tcp_nopush     on;
            keepalive_timeout  65;
            #gzip  on;
            include /etc/nginx/conf.d/*.conf;
        } 
  5. Après avoir cliqué sur , les messages d'état du déploiement apparaissent.

kubectl

Vous pouvez utiliser les commandes kubectl pour créer et consulter des applications.

  1. Connectez-vous à votre cluster. Pour plus de détails, consultez Obtenir le kubeconfig du cluster et se connecter avec kubectl ou Gérer les clusters Kubernetes avec kubectl dans CloudShell.

  2. Exécutez la commande suivante pour démarrer un conteneur (tel qu'un serveur web Nginx).

     kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
  3. Exécutez la commande suivante pour créer un endpoint de service pour le conteneur. Spécifier --type=LoadBalancer crée un SLB Alibaba Cloud qui route le trafic vers le conteneur Nginx.

    kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
  4. Exécutez la commande suivante pour lister les conteneurs nginx en cours d'exécution.

    kubectl get pod |grep nginx

    Sortie attendue :

    NAME                                   READY     STATUS    RESTARTS   AGE
    nginx-2721357637-d****                 1/1       Running   1          9h