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
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Deployments, cliquez sur Create from Image.
-
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).
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.
Pour ajouter plusieurs conteneurs au pod, cliquez sur à côté de l'onglet Container 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.
RemarqueEn 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.
-
-
(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.
-
(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: testDéfinissez le nom de la variable d'environnement.
Définissez la valeur de la variable référencée.
-
-
(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.
-
(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.
-
(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.
-
(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/nginxet 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.
-
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.
-
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.
-
Configurer Ingress : cliquez sur à côté de pour définir les règles de routage des pods backend.
-
-
(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.
RemarquePour 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).
-
(Facultatif) Dans la section , cliquez sur Add pour définir les libellés et annotations des pods.
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.
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Deployments, cliquez sur Create from YAML dans le coin supérieur droit.
-
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.
RemarqueACS 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.
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.
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.
-
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 -
Exécutez la commande suivante pour créer un endpoint de service pour le conteneur. Spécifier
--type=LoadBalancercrée un SLB Alibaba Cloud qui route le trafic vers le conteneur Nginx.kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer -
Exécutez la commande suivante pour lister les conteneurs nginx en cours d'exécution.
kubectl get pod |grep nginxSortie attendue :
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h