Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Déployer une charge de travail et mettre en œuvre l'équilibrage de charge dans un cluster ACK Auto Mode

Dernière mise à jour :Sep 21, 2026

Cette rubrique explique comment déployer une charge de travail dans un cluster ACK Auto Mode et l'exposer à Internet via un ALB Ingress. Une fois ces étapes terminées, vous pouvez accéder à l'application avec un nom de domaine spécifié pour une gestion efficace du trafic externe et de l'équilibrage de charge.

Cette rubrique couvre les opérations suivantes :

  1. Créez un namespace pour l'application d'exemple.

  2. Déployez une application Nginx d'exemple et créez un Service pour exposer l'application au réseau du cluster.

  3. Créez un ALB Ingress pour exposer l'application à Internet. Vous devez créer manuellement un AlbConfig pour gérer l'instance ALB et un IngressClass à associer à l'AlbConfig.

  4. Vérifiez que le déploiement a réussi et accédez à l'application depuis un navigateur. Libérez les ressources si elles ne sont plus nécessaires.

Une fois ces opérations effectuées, vous disposerez des éléments suivants :

  • Une application Nginx d'exemple en cours d'exécution avec deux réplicas.

  • Un point d'entrée public stable pour l'application, fourni par un ALB Ingress et un Service.

  • Une réduction de la charge opérationnelle, car ACK en mode Auto Mode met automatiquement à l'échelle les ressources et gère le cycle de vie des nœuds en fonction de la charge de l'application.

Prérequis

Étape 1 : Créer un namespace

Créez un namespace pour isoler les ressources de ce tutoriel.

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

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and Quotas.

  3. Cliquez sur Create. Dans la boîte de dialogue qui s'affiche, saisissez un nom de namespace personnalisé (cette rubrique utilise my-nginx-namespace comme exemple), configurez les autres paramètres selon les instructions affichées à l'écran, puis cliquez sur OK.

Étape 2 : Déployer l'application Nginx et le Service

Dans cette section, vous déployez un Deployment Nginx d'exemple nommé my-nginx et un Service nommé my-nginx-svc pour exposer l'application.

  • Deployment : 2 réplicas. L'image utilise une application Nginx d'exemple. Le port 80 est exposé pour recevoir le trafic HTTP.

  • Service : Le type de Service est ClusterIP. Le port 80 du Service correspond au port 80 du conteneur du pod. Le Service utilise un sélecteur de libellés pour faire correspondre les pods.

Cette section fournit uniquement une procédure d'exemple. Pour les procédures détaillées de création de charges de travail et de Services, consultez Créer une charge de travail et Gestion des Services .
  1. Créez un fichier nommé my-nginx.yaml avec le contenu suivant pour déployer le Deployment et le Service.

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: my-nginx    # The name of the sample application.
      namespace: my-nginx-namespace  # Replace with the name of the namespace that you created.
      labels:
        app: nginx
    spec:
      replicas: 2       # The number of replicas.
      selector:
        matchLabels:
          app: nginx     # The value must match the selector in the Service to expose this application.
      template:
        metadata:
          labels:
            app: nginx
        spec:
        #  nodeSelector:
        #    env: test-team
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80         # This port must be exposed in the Service.
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: my-nginx-namespace  # Replace with the name of the namespace that you created.
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: ClusterIP   # If you use Flannel, you must use NodePort.
  2. Déployez le Deployment et le Service.

    kubectl apply -f my-nginx.yaml
  3. Vérifiez l'état du Deployment et du Service.

    • Vérifiez l'état du Deployment.

      kubectl get deployment my-nginx -n my-nginx-namespace

      Sortie attendue :

      NAME       READY   UP-TO-DATE   AVAILABLE   AGE
      my-nginx   2/2     2            2           4m36s
    • Vérifiez l'état du Service.

      kubectl get svc my-nginx-svc -n my-nginx-namespace

      Sortie attendue :

      NAME           TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
      my-nginx-svc   ClusterIP   192.XX.XX.164   <none>        80/TCP    42s

Étape 3 : Créer un ALB Ingress et les ressources associées

Pour gérer le trafic externe accédant aux applications du cluster via un ALB Ingress, vous devez préparer les ressources suivantes.

Avant de créer un ALB Ingress, nous vous recommandons de vous familiariser avec ses principes et exigences dans Gestion des ALB Ingress .
  • ALB Ingress Controller : composant qui gère les ressources Ingress. Après avoir activé le mode Auto Mode pour un cluster, l'ALB Ingress Controller est installé par défaut.

  • AlbConfig : CustomResourceDefinition (CRD) créée par l'ALB Ingress Controller pour déclarer la configuration d'une instance ALB. Chaque AlbConfig correspond à une instance ALB. Une instance ALB est le point d'entrée des requêtes utilisateur et transfère les requêtes vers les Services backend.

  • IngressClass : Lors de la création d'un ALB Ingress, vous pouvez spécifier cet IngressClass pour référencer l'AlbConfig correspondant. Cela vous permet d'appliquer des configurations de routage d'application et des politiques d'équilibrage de charge spécifiques.

Créer un AlbConfig

  1. Créez un fichier nommé alb.yaml avec le contenu suivant pour créer un AlbConfig.

    • Cet AlbConfig définit addressType sur Internet. Cela signifie que l'instance ALB reçoit une adresse IP publique, son nom de domaine DNS se résout en adresse IP publique et l'instance est accessible depuis Internet.

    • Pour vSwitchId, saisissez les ID de deux vSwitch situés dans deux zones différentes. Les vSwitch doivent se trouver dans le même VPC que le cluster et dans des zones prises en charge par ALB.

      Dans la console VPC , vous pouvez obtenir l'ID du vSwitch sur la page vSwitch . Si vous devez créer un vSwitch, consultez Créer et gérer des vSwitch .
    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet  # The address type of the load balancer. An Internet-facing ALB instance is accessible over the internet.
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # Replace with the ID of your vSwitch.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****  # Replace with the ID of your vSwitch.
      listeners:
        - port: 80
          protocol: HTTP
  2. Créez l'AlbConfig.

    kubectl apply -f alb.yaml
  3. Affichez la ressource AlbConfig.

    kubectl get AlbConfig alb

    Sortie attendue :

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            60s
    Remarque

    Les champs PORT&PROTOCOL et CERTID ne sont renseignés qu'après la création d'un écouteur HTTPS et la configuration d'un certificat pour celui-ci. Il est normal que ces champs soient vides.

Créer un IngressClass

  1. Créez un fichier nommé ingress_class.yaml avec le contenu suivant pour créer un IngressClass.

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # The name of the AlbConfig associated with the IngressClass.
  2. Créez l'IngressClass.

    kubectl apply -f ingress_class.yaml

Créer un ALB Ingress

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

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Network > Ingresses.

  3. Sur la page Ingresses, sélectionnez le namespace que vous avez créé, puis cliquez sur Create Ingress. Dans la boîte de dialogue Create Ingress, configurez l'Ingress et suivez les instructions à l'écran pour créer l'Ingress.

    Le tableau suivant décrit uniquement les paramètres clés. Pour plus d'informations sur les paramètres et les opérations connexes, telles que la configuration de la résolution DNS, consultez Créer un ALB Ingress.

    Paramètre

    Description

    Type de passerelle

    Sélectionnez ALB Ingress.

    Name

    Saisissez un nom personnalisé pour l'Ingress, tel que my-albingress.

    IngressClass

    Sélectionnez la classe Ingress que vous avez créée pour référencer l'AlbConfig correspondant.

    Rules

    • Service : Sélectionnez le Service de destination, qui est le Service que vous avez créé.

    • Port : Sélectionnez le port que vous souhaitez exposer pour le Service, soit 80 dans cet exemple.

    Conservez les valeurs par défaut pour les autres paramètres.

    Une fois l'Ingress créé, revenez à la page Ingresses. Au bout d'environ une minute, recherchez et copiez le nom DNS dans la colonne Endpoint.

Étape 4 : Accéder à l'application

Collez le nom DNS dans votre navigateur pour accéder à l'application Nginx.

Le navigateur affiche la page d'accueil Nginx par défaut avec le titre Welcome to nginx on Anolis OS! Cela indique que le serveur Web fonctionne comme prévu et que la configuration ALB Ingress est correcte.

(Facultatif) Étape 5 : Nettoyer les ressources

Les ressources créées dans cette rubrique incluent un Deployment, un Service, un AlbConfig, un IngressClass et un ALB Ingress. Exécutez les commandes suivantes pour nettoyer les ressources.

Remplacez les noms d'exemple dans les commandes suivantes par vos noms de ressources réels.
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete service my-nginx-svc -n my-nginx-namespace
kubectl delete ingress my-albingress -n my-nginx-namespace
kubectl delete albconfig alb
kubectl delete ingressclass alb

Documents connexes