Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Déployer un exemple d'application sous Linux

Mode de mise au point
Déployer un exemple d'application sous Linux - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Dans cette rubrique, vous allez déployer un exemple d'application sur votre cluster sur des nœuds Linux.

Prérequis

  • Un cluster Kubernetes existant avec au moins un nœud. Si vous ne possédez pas de cluster Amazon EKS existant, vous pouvez en déployer un à l'aide de l'un des guides fournis dansMise en route avec Amazon EKS.

  • Kubectl installé sur votre ordinateur. Pour de plus amples informations, veuillez consulter Configurez kubectl et eksctl.

  • Kubectl configuré pour communiquer avec votre cluster. Pour de plus amples informations, veuillez consulter Connect kubectl à un cluster EKS en créant un fichier kubeconfig.

  • Si vous prévoyez de déployer votre charge de travail d'exemple sur Fargate, vous devez disposer d'un profil Fargate existant qui inclut le même espace de noms créé dans ce didacticiel, à savoir eks-sample-app, à moins que vous ne changiez le nom. Si vous avez créé un cluster avec l'un des guidesMise en route avec Amazon EKS, vous devrez créer un nouveau profil ou ajouter l'espace de noms à votre profil existant, car le profil créé dans les guides de démarrage ne spécifie pas l'espace de noms utilisé dans ce didacticiel. Votre VPC doit également disposer d'au moins un sous-réseau privé.

Bien que de nombreuses variables soient modifiables dans les étapes suivantes, nous vous recommandons de ne modifier les valeurs des variables qu'aux endroits spécifiés. Une fois que vous aurez mieux compris les pods, les déploiements et les services Kubernetes, vous pourrez essayer de modifier d'autres valeurs.

Création d’un espace de noms

Un espace de noms vous permet de regrouper des ressources dans Kubernetes. Pour plus d'informations, consultez Espaces de noms dans la documentation Kubernetes. Si vous prévoyez de déployer votre exemple d'application pour simplifier la gestion des calculs avec AWS Fargate, assurez-vous que la valeur namespace indiquée dans votre section Définir les pods qui utilisent AWS Fargate au lancement est. eks-sample-app

kubectl create namespace eks-sample-app

Création d'un déploiement Kubernetes

Créer un déploiement Kubernetes. Cet exemple de déploiement extrait une image de conteneur d'un référentiel public et déploie trois répliques (pods individuels) de celle-ci sur votre cluster. Pour en savoir plus, consultez Déploiements dans la documentation Kubernetes.

  1. Enregistrez le contenu suivant dans un fichier nommé eks-sample-deployment.yaml. Les conteneurs de l'exemple d'application n'utilisent pas le stockage réseau, mais certaines applications en ont peut-être besoin. Pour de plus amples informations, veuillez consulter Stockez les données d'application pour votre cluster.

    • Le amd64 ou arm64 values sous la clé kubernetes.io/arch signifient que l'application peut être déployée sur l'une ou l'autre architecture matérielle (si vous avez les deux dans votre cluster). Cela est possible car cette image est une image multi-architecture, mais toutes ne le sont pas. Vous pouvez déterminer l'architecture matérielle sur laquelle l'image est prise en charge en consultant les détails de l'image dans le référentiel d'où vous l'extrayez. Lorsque vous déployez des images qui ne prennent pas en charge un type d'architecture matérielle ou sur lesquelles vous ne souhaitez pas que l'image soit déployée, supprimez ce type du manifeste. Pour plus d'informations, consultez Étiquettes, annotations et rejets connus dans la documentation Kubernetes.

    • Le kubernetes.io/os: linux nodeSelector signifie que si vous possédez des nœuds Linux et Windows (par exemple) dans votre cluster, l'image ne sera déployée que sur des nœuds Linux. Pour plus d'informations, consultez Étiquettes, annotations et rejets connus dans la documentation Kubernetes.

      apiVersion: apps/v1 kind: Deployment metadata: name: eks-sample-linux-deployment namespace: eks-sample-app labels: app: eks-sample-linux-app spec: replicas: 3 selector: matchLabels: app: eks-sample-linux-app template: metadata: labels: app: eks-sample-linux-app spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/arch operator: In values: - amd64 - arm64 containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.23 ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: linux
  2. Appliquer le manifeste de déploiement à votre cluster.

    kubectl apply -f eks-sample-deployment.yaml

Créer un service

Un service vous permet d'accéder à toutes les réplicas via une seule adresse IP ou un seul nom. Pour plus d'informations, consultez Service dans la documentation Kubernetes. Bien que cela ne soit pas implémenté dans l'exemple d'application, si certaines applications doivent interagir avec d'autres AWS services, nous vous recommandons de créer des comptes de service Kubernetes pour vos pods et de les associer à AWS des comptes IAM. En spécifiant des comptes de service, vos pods ne disposent que des autorisations minimales que vous spécifiez pour qu'ils puissent interagir avec d'autres services. Pour de plus amples informations, veuillez consulter Rôles IAM pour les comptes de service.

  1. Enregistrez le contenu suivant dans un fichier nommé eks-sample-service.yaml. Kubernetes attribue au service sa propre adresse IP qui n'est accessible que depuis l'intérieur du cluster. Pour accéder au service depuis l'extérieur de votre cluster, déployez l'AWS Load Balancer Controller pour équilibrer la charge du trafic d'application ou de réseau vers le service.

    apiVersion: v1 kind: Service metadata: name: eks-sample-linux-service namespace: eks-sample-app labels: app: eks-sample-linux-app spec: selector: app: eks-sample-linux-app ports: - protocol: TCP port: 80 targetPort: 80
  2. Appliquer le manifeste du service à votre cluster.

    kubectl apply -f eks-sample-service.yaml

Réviser les ressources créées

  1. Affichez toutes les ressources présentes dans l'espace de noms eks-sample-app.

    kubectl get all -n eks-sample-app

    L'exemple qui suit illustre un résultat.

    NAME READY STATUS RESTARTS AGE pod/eks-sample-linux-deployment-65b7669776-m6qxz 1/1 Running 0 27m pod/eks-sample-linux-deployment-65b7669776-mmxvd 1/1 Running 0 27m pod/eks-sample-linux-deployment-65b7669776-qzn22 1/1 Running 0 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/eks-sample-linux-service ClusterIP 10.100.74.8 <none> 80/TCP 32m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/eks-sample-linux-deployment 3/3 3 3 27m NAME DESIRED CURRENT READY AGE replicaset.apps/eks-sample-linux-deployment-776d8f8fd8 3 3 3 27m

    Dans la sortie, vous voyez le service et le déploiement spécifiés dans l'exemple de manifestes déployés dans les étapes précédentes. Vous voyez aussi trois pods. Ceci est dû au fait que 3 replicas ont été spécifiés dans l'exemple de manifeste. Pour plus d'informations sur les pods, consultez pods dans la documentation Kubernetes. Kubernetes crée automatiquement la replicaset ressource, même si elle n'est pas spécifiée dans les exemples de manifestes. Pour plus d'informationsReplicaSets, consultez la documentation ReplicaSetde Kubernetes.

    Note

    Kubernetes conserve le nombre de réplicas spécifié dans le manifeste. S'il s'agissait d'un déploiement de production et que vous souhaitiez que Kubernetes redimensionne horizontalement le nombre de répliques ou redimensionne verticalement les ressources de calcul pour les pods, utilisez les déploiements de pods avec Horizontal Pod Autoscaler et Adjust les ressources des pods avec Vertical Pod Autoscaler pour ce faire.

  2. Affichez les détails du service déployé.

    kubectl -n eks-sample-app describe service eks-sample-linux-service

    L'exemple qui suit illustre un résultat.

    Name: eks-sample-linux-service Namespace: eks-sample-app Labels: app=eks-sample-linux-app Annotations: <none> Selector: app=eks-sample-linux-app Type: ClusterIP IP Families: <none> IP: 10.100.74.8 IPs: 10.100.74.8 Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints: 192.168.24.212:80,192.168.50.185:80,192.168.63.93:80 Session Affinity: None Events: <none>

    Dans la sortie précédente, la valeur pour IP: est une adresse IP unique accessible depuis n'importe quel nœud ou pod du cluster, mais pas depuis l'extérieur du cluster. Les valeurs pour Endpoints sont les adresses IP attribuées depuis votre VPC aux pods qui font partie du service.

  3. Visualisez les détails de l'un des pods listés en sortie lorsque vous avez visualisé l'espace de noms dans une étape précédente. 776d8f8fd8-78w66Remplacez-le par la valeur renvoyée pour l'un de vos pods.

    kubectl -n eks-sample-app describe pod eks-sample-linux-deployment-65b7669776-m6qxz

    Exemple de sortie abrégé

    Name: eks-sample-linux-deployment-65b7669776-m6qxz Namespace: eks-sample-app Priority: 0 Node: ip-192-168-45-132.us-west-2.compute.internal/192.168.45.132 [...] IP: 192.168.63.93 IPs: IP: 192.168.63.93 Controlled By: ReplicaSet/eks-sample-linux-deployment-65b7669776 [...] Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m20s default-scheduler Successfully assigned eks-sample-app/eks-sample-linux-deployment-65b7669776-m6qxz to ip-192-168-45-132.us-west-2.compute.internal [...]

    Dans la sortie précédente, la valeur pour IP: est une adresse IP unique attribuée au Pod à partir du bloc CIDR attribué au sous-réseau dans lequel se trouve le nœud. Si vous préférez attribuer aux pods des adresses IP à partir de différents blocs d'adresse CIDR, vous pouvez modifier le comportement par défaut. Pour de plus amples informations, veuillez consulter Déployez des pods dans des sous-réseaux alternatifs avec un réseau personnalisé. Vous pouvez également voir que le planificateur Kubernetes a programmé le pod sur le Node avec l'adresse IP 192.168.45.132.

    Astuce

    Plutôt que d'utiliser la ligne de commande, vous pouvez consulter de nombreux détails sur les pods, les services, les déploiements et les autres ressources Kubernetes dans le. AWS Management Console Pour de plus amples informations, veuillez consulter Consultez les ressources Kubernetes dans AWS Management Console.

Exécuter un shell sur un Pod

  1. Exécutez un shell sur le pod que vous avez décrit à l'étape précédente, en le 65b7669776-m6qxz remplaçant par l'identifiant de l'un de vos pods.

    kubectl exec -it eks-sample-linux-deployment-65b7669776-m6qxz -n eks-sample-app -- /bin/bash
  2. À partir du shell Pod, visualisez la sortie du serveur Web qui a été installé lors de votre déploiement lors d'une étape précédente. Vous devez uniquement spécifier le nom du service. Il est résolu à l'adresse IP du service par CoreDNS, qui est déployé par défaut avec un cluster Amazon EKS.

    curl eks-sample-linux-service

    L'exemple qui suit illustre un résultat.

    <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> [...]
  3. À partir du shell du pod, affichez le serveur DNS pour le pod.

    cat /etc/resolv.conf

    L'exemple qui suit illustre un résultat.

    nameserver 10.100.0.10 search eks-sample-app.svc.cluster.local svc.cluster.local cluster.local us-west-2.compute.internal options ndots:5

    Dans la sortie précédente, 10.100.0.10 est automatiquement affecté en tant que nameserver pour tous les pods déployés dans le cluster.

  4. Déconnectez-vous du pod en tapant exit.

  5. Une fois que vous avez terminé d'utiliser l'exemple d'application, vous pouvez supprimer l'espace de noms, le service et le déploiement de l'exemple à l'aide de la commande suivante.

    kubectl delete namespace eks-sample-app

Étapes suivantes

Après avoir déployé l'exemple d'application, vous pouvez essayer certains des exercices suivants :

Rubrique précédente :

Charges de travail
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.