Les pods étant créés et supprimés fréquemment, leurs adresses IP changent constamment. Un service Kubernetes offre un endpoint réseau stable pour un groupe de pods et répartit le trafic entre eux, découplant ainsi les clients frontend des pods backend. Utilisez la console ACK pour créer un déploiement et l'exposer via un service.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK Serverless. Pour plus d'informations, consultez la section Démarrage rapide d'ACK Serverless
Fonctionnement des services
Un sélecteur d'étiquettes identifie les pods ciblés par un service. Lorsque le service reçoit du trafic, il distribue les requêtes à tous les pods dont les étiquettes correspondent au sélecteur.
Le tableau suivant présente les trois types de service et indique quand utiliser chacun d'eux :
| Type de service | Mode d'accès | Cas d'utilisation |
|---|---|---|
| Cluster IP | Adresse IP interne au cluster uniquement (par défaut) | Exposer l'application à d'autres charges de travail au sein du même cluster |
| Node Port | <NodeIP>:<NodePort> depuis l'extérieur du cluster |
Accès direct au niveau des nœuds ; non disponible pour les clusters ACK Serverless |
| Server Load Balancer | Instance SLB orientée Internet ou interne | Exposer l'application à des utilisateurs externes ou à des consommateurs internes du VPC |
Pour consulter la spécification complète des services Kubernetes, rendez-vous sur la page Services Kubernetes.
Étape 1 : Créer un déploiement
Connectez-vous à la console ACK. 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.
Dans le coin supérieur droit de la page Deployments, cliquez sur Create from YAML.
-
Sélectionnez un modèle d'exemple ou collez un manifeste YAML personnalisé, puis cliquez sur Create. L'exemple ci-dessous déploie deux réplicas NGINX et expose le port 80 :
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 spec: containers: - name: nginx image: nginx:1.7.9 # Replace with your image ports: - containerPort: 80 # This port is referenced in the Service port mapping -
Sur la page Deployments, cliquez sur le nom du déploiement ou sur Details dans la colonne Actions pour confirmer qu'il est en cours d'exécution.

Étape 2 : Créer un service
Dans le volet de navigation de gauche de la page des détails du cluster, choisissez Network > Services.
Sur la page Services, cliquez sur Create.
-
Dans la boîte de dialogue Create Service, configurez les paramètres décrits dans le tableau suivant, puis cliquez sur Create.
Paramètre Description Name Nom du service. Service Type Mode d'accès au service. Consultez la section Détails des types de service pour obtenir des conseils. External Traffic Policy Disponible uniquement pour les types Node Port et Server Load Balancer. Local achemine le trafic uniquement vers les pods situés sur le nœud qui a reçu la requête. Cluster permet d'acheminer le trafic vers les pods sur n'importe quel nœud du cluster. Pour une comparaison, consultez la section Différences entre les politiques de trafic externe. Backend Déploiement à associer à ce service. Si ce champ est laissé vide, aucun objet Endpoint n'est créé. Consultez la section Services sans sélecteurs. Port Mapping Mappe le port du service (champ portdans le YAML) au port du conteneur (champtargetPortdans le YAML). Le port du conteneur doit correspondre au port exposé dans le pod backend.Annotations Annotations clé-valeur qui configurent l'instance SLB sous-jacente. Sélectionnez Custom Annotation ou Alibaba Cloud Annotation dans la liste déroulante Type. Par exemple, service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:2limite la bande passante à 2 Mbit/s. Pour toutes les annotations prises en charge, consultez la section Utiliser des annotations pour configurer les instances CLB.Label Étiquettes utilisées pour identifier ce service. Sur la page Services, vérifiez que le service apparaît dans la liste. Pour accéder à l'application backend, cliquez sur le lien hypertexte situé à côté de External Endpoint sur la page des détails du service.
Détails des types de service
Cluster IP
Cluster IP expose le service sur une adresse IP interne au cluster, ce qui le rend accessible uniquement depuis l'intérieur du cluster. Il s'agit du type par défaut, adapté aux services consommés uniquement par d'autres charges de travail au sein du même cluster.
Pour utiliser un service headless, par exemple afin de l'intégrer à un mécanisme de découverte de services personnalisé, cochez la case Headless Service . Cette option n'est disponible que lorsque le paramètre Service Type est défini sur Cluster IP.
Node Port
Node Port mappe un port statique sur chaque nœud vers le service, permettant un accès depuis l'extérieur du cluster via <NodeIP>:<NodePort>. Le système crée automatiquement un service Cluster IP pour gérer le routage interne.
Node Port est pris en charge uniquement pour les clusters ACK. Les clusters ACK Serverless ne prennent pas en charge ce type.
Server Load Balancer
Server Load Balancer (SLB) crée ou réutilise une instance SLB pour exposer le service à l'extérieur (orienté Internet) ou en interne (orienté VPC). Le trafic peut être acheminé vers des services Node Port ou Cluster IP.
Options d'instance SLB :
Create SLB Instance : Cliquez sur Modify pour modifier la spécification de l'instance.
Use Existing SLB Instance : Sélectionnez une instance SLB depuis votre compte.
Remarques d'utilisation :
Si vous utilisez une instance SLB existante, les écouteurs de l'instance SLB écrasent les écouteurs du service.
Les services partageant la même instance SLB doivent utiliser des ports d'écoute frontend différents pour éviter les conflits de ports.
Ne renommez pas les écouteurs ni les groupes vServer gérés par Kubernetes, car Kubernetes utilise ces noms comme identifiants uniques.
Les instances SLB ne peuvent pas être partagées entre plusieurs clusters.
Une instance SLB créée automatiquement pour un service ne peut pas être réutilisée par d'autres services. Seules les instances SLB créées manuellement dans la console ou via l'API peuvent être partagées entre plusieurs services.
Étapes suivantes
Pour mettre à jour ou supprimer le service, cliquez sur Update ou Delete dans la colonne Actions sur la page Services.
Pour configurer des paramètres d'équilibrage de charge avancés, consultez la section Utiliser des annotations pour configurer les instances CLB.
Pour en savoir plus sur les compromis liés aux politiques de trafic externe, consultez la section Différences entre les politiques de trafic externe.