Tous les produits
Search
Centre de documentation

Container Compute Service:Créer un StatefulSet

Dernière mise à jour :Aug 12, 2026

Container Service for Kubernetes (ACK) permet de créer des StatefulSets directement depuis la console. Cet exemple déploie une application NGINX avec état afin d'illustrer les fonctionnalités des StatefulSets.

Prérequis

kubectl est connecté à votre cluster Kubernetes. Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour s'y connecter.

Fonctionnalités des StatefulSets

Un StatefulSet offre les fonctionnalités suivantes :

Fonctionnalité

Description

Identité de Pod cohérente

Garantit un ordre déterministe (démarrage et arrêt) ainsi qu'une identité réseau stable, conservée par le Pod indépendamment de son ordonnancement.

Stockage persistant stable

Crée un PV pour chaque Pod via un VolumeClaimTemplate. La réduction du nombre de réplicas ou leur suppression n'entraîne pas la destruction des volumes associés.

Identité réseau stable

Le hostname du Pod suit le modèle : (nom du StatefulSet)-(index ordinal).

Ordre stable

Pour un StatefulSet comportant N réplicas, chaque Pod reçoit un index ordinal unique dans l'intervalle [0, N).

Étapes

É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 > StatefulSets.

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

  4. Sur la page Basic Information, configurez l'application.

    Paramètre

    Description

    Application Name

    Saisissez le nom de l'application.

    Replicas:

    Nombre de pods pour l'application. Valeur par défaut : 2.

    Workloads

    Sélectionnez StatefulSets.

    Labels

    Libellé permettant d'identifier l'application.

    Annotations

    Annotation associée à l'application.

    Instance type

    Sélectionnez un type de calcul. Pour plus d'informations 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 Next pour accéder à la page Container.

É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 souhaitée.

      • Container Registry Enterprise Edition : sélectionnez une image Enterprise Edition hébergée dans Alibaba Cloud Container Registry (ACR). Spécifiez 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 (activation préalable requise) : sélectionnez une image Personal Edition hébergée dans ACR. Spécifiez 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'environnements d'exécution linguistiques ainsi que 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 (déjà récupérée sur l'hôte), elle n'est pas téléchargée à nouveau. Sinon, elle est récupérée.

      • : récupère systématiquement 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 de manière sécurisée aux images privées.

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

      • Pour les instances ACR Enterprise Edition, récupérez 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 requête et de limite CPU. Par défaut, la requête est égale à la limite et la facturation suit le mode paiement à l'utilisation. Si vous définissez une limite différente via YAML, la requête sera écrasée pour correspondre à cette limite. Pour plus de détails, consultez Spécifications des ressources.

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

    Interactive Session

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

    • stdin : transmet l'entrée console au conteneur.

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

    Remarque

    En général, stdin et tty sont sélectionnés ensemble afin de lier le terminal (tty) à l'entrée standard (stdin) du conteneur. Par exemple, un programme interactif lit les entrées 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 permettent de bloquer ou de retarder le démarrage des conteneurs applicatifs jusqu'à ce qu'ils se terminent avec succès. Après leur exécution réussie, les conteneurs applicatifs du pod démarrent en parallèle. Vous pouvez par exemple utiliser des conteneurs d'initialisation pour vérifier la disponibilité de services dépendants. Ils peuvent également contenir des utilitaires ou des scripts d'installation absents de l'image applicative afin d'initialiser l'environnement d'exécution, par exemple en configurant des paramètres 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.

    Configurez des variables d'environnement pour le pod sous forme de paires clé-valeur afin d'ajouter des indicateurs d'environnement ou de transmettre des configurations. 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 Variable Name puis choisissez le nom du Secret correspondant et la clé dans les deux listes déroulantes situées à droite.

    Le YAML correspondant référence l'intégralité du Secret :

    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. En cas d'échecs répétés, le kubelet redémarre le conteneur. Cela permet de résoudre des problèmes tels que les interblocages, où le conteneur s'exécute mais ne progresse plus.

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

    • Startup Probes : ces sondes ne s'exécutent qu'au démarrage du conteneur afin de vérifier s'il a démarré correctement. Les Liveness Probes et Readiness Probes ne s'exécutent qu'après la réussite de la sonde de démarrage.

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

    Paramètre

    Description

    Envoie une requête HTTP GET au conteneur. Paramètres pris en charge :

    • : 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 dupliqués. Configurez-les sous forme de paires clé-valeur.

    • : le paramètre initialDelaySeconds définit le délai d'attente, en secondes, 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 définit 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 définit 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 considérer 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 considérer le conteneur comme non sain. La valeur par défaut est 3. Le minimum est 1.

    Ouvre un socket TCP vers le conteneur. Le 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 défaillant. Paramètres pris en charge :

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

    • : le paramètre initialDelaySeconds définit le délai d'attente, en secondes, 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 définit 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 définit 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 considérer 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 considérer 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. Paramètres pris en charge :

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

    • : le paramètre initialDelaySeconds définit le délai d'attente, en secondes, 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 définit 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 définit 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 considérer 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 considérer 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.

    Configurez 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 dans le conteneur.

    • Stockage local : montez des ConfigMaps, des Secrets ou des répertoires temporaires vers des chemins du 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 les journaux stdout et 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 situés sous /var/log/nginx et prend en charge les caractères génériques.

    Tags personnalisés

    Définissez également des tags personnalisés. Une fois configurés, ces tags sont inclus avec les journaux du conteneur. Les tags personnalisés facilitent la catégorisation des journaux pour des statistiques et un filtrage plus aisés lors de l'analyse.

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

Étape 3 : Finaliser la configuration avancée

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

  1. Dans la section , configurez la méthode d'exposition des 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 afficher les détails de 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 méthode d'accès. 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. Choisissez 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 permet de créer un nouveau SLB ou de réutiliser un SLB existant, 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 (afin d'é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'écoute frontend afin d'éviter les conflits.

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

        • La réutilisation d'un SLB entre plusieurs 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 ne pouvez définir l'External Traffic Policy que lorsque le type de service est .

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

      Ajoutez un libellé pour identifier ce service.

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

      Développer pour afficher les détails de configuration de l'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 ayant fait l'objet d'un dépôt ICP.

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

      Paramètre

      Description

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

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

      • Domain Name : saisissez le domaine de l'Ingress.

      • : spécifiez le chemin URL pour l'accès au service. La valeur par défaut est le chemin racine /. Chaque chemin est associé à 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 la version 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 des clés et valeurs de libellé identifiant les caractéristiques de cet Ingress.

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

    • 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, spécifiez 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 sortante.

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

      Limite inférieure de mise à l'échelle entrante pour cette charge de travail.

    • Container Compute Service prend également en charge la mise à l'échelle planifiée (CronHPA) pour ajuster automatiquement les clusters Kubernetes à des heures précises. 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 des libellés et annotations de pod.

  2. Cliquez sur .

Étape 4 : Consulter l'application

Après la création, une page de confirmation s'affiche. Cliquez sur View Details pour ouvrir la page de détails du StatefulSet.

Vous pouvez également, sur la page Deployments, cliquer sur le nom du StatefulSet ou sur Details dans la colonne Actions.