Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Deploy a workload and implement load balancing in an ACK Auto Mode cluster

Dernière mise à jour :Aug 11, 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 accomplies, vous pourrez accéder à l'application avec un nom de domaine spécifique, ce qui facilitera la gestion du trafic externe et l'équilibrage de charge.

Cette rubrique couvre les opérations suivantes :

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

  2. Déployez un exemple d'application Nginx et créez un Service afin d'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, ainsi qu'une 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 terminées, vous disposerez des éléments suivants :

  • Un exemple d'application Nginx 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 les ressources à l'échelle 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 afin d'isoler les ressources utilisées dans 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é (cet exemple utilise my-nginx-namespace), 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éploierez un exemple de Deployment Nginx nommé my-nginx et un Service nommé my-nginx-svc afin d'exposer l'application.

  • Deployment : 2 réplicas. L'image utilise un exemple d'application Nginx. 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 obtenir des instructions détaillées sur la 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 en consultant Gestion des ALB Ingress .
  • ALB Ingress Controller : composant qui gère les ressources Ingress. Lorsque vous activez 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 sert de point d'entrée aux requêtes utilisateur et transfère ces requêtes vers les Services backend.

  • IngressClass : Lors de la création d'un ALB Ingress, vous pouvez spécifier cette 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, que son nom de domaine DNS se résout en cette adresse IP publique et que l'instance est accessible depuis Internet.

    • Pour vSwitchId, saisissez les ID de deux vSwitch situés dans deux zones différentes. Les vSwitch doivent appartenir au même VPC que le cluster et se trouver 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 vSwitches .
    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. Consultez 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 une IngressClass

  1. Créez un fichier nommé ingress_class.yaml avec le contenu suivant pour créer une 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 ci-dessous 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, par exemple my-albingress.

    IngressClass

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

    Rules

    • Service : Sélectionnez le Service de destination, c'est-à-dire 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 depuis 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 de l'ALB Ingress est correcte.

(Facultatif) Étape 5 : Nettoyer les ressources

Les ressources créées dans cette rubrique incluent un Deployment, un Service, un AlbConfig, une 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