Aidez à améliorer cette page
Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tous.
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.
Déployer un exemple d'application
Dans cette rubrique, vous déployez un exemple d'application sur votre cluster.
Prérequis
-
Un existant Kubernetes cluster avec au moins un nœud. Si vous ne possédez pas de EKS cluster Amazon existant, vous pouvez en déployer un à l'aide de l'un des Commencez avec Amazon EKS guides. Si vous déployez un Windows application, alors vous devez avoir Windows support activé pour votre cluster et au moins un Amazon EC2 Windows nœud.
-
Kubectl
installé sur votre ordinateur. Pour de plus amples informations, veuillez consulter Configuration kubectl et eksctl. -
Kubectl
configuré pour communiquer avec votre cluster. Pour de plus amples informations, veuillez consulter Connexion kubectl à un EKS cluster en créant un kubeconfig dans le fichier. -
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 utilisé l'un des guides de démarrage pour créer votre cluster, 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. Vous VPC devez également disposer d'au moins un sous-réseau privé.
Pour déployer un exemple d'application
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 une meilleure compréhension de Kubernetes Pods, déploiements et services, vous pouvez essayer de modifier d'autres valeurs.
-
Créez un espace de noms . Un espace de noms vous permet de regrouper des ressources dans Kubernetes. Pour plus d'informations, consultez la section Espaces de noms
dans le Kubernetes . Si vous prévoyez de déployer votre application d'exemple vers Simplifiez la gestion informatique avec AWS Fargate, assurez-vous que la valeur de namespace
dans votre Définissez quelle Pods utilisation AWS Fargate lors du lancement esteks-sample-app
.kubectl create namespace eks-sample-app
-
Créez un Kubernetes déploiement. Cet exemple de déploiement extrait une image de conteneur d'un référentiel public et déploie trois répliques (individuelles) Pods) de celui-ci à votre cluster. Pour en savoir plus, consultez la section Déploiements
dans le Kubernetes . Vous pouvez déployer l'application sur Linux or Windows nœuds. Si vous effectuez un déploiement sur Fargate, vous ne pouvez déployer qu'un Linux application. -
Enregistrez le contenu suivant dans un fichier nommé
eks-sample-deployment.yaml
. Les conteneurs de l'application d'exemple n'utilisent pas de stockage réseau, mais vous pouvez avoir des applications qui en ont besoin. Pour de plus amples informations, veuillez consulter Stockez les données d'application pour votre cluster. -
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 la section Service
dans le 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 Kubernetes comptes de service pour votre Pods, et associez-les à AWS IAM des comptes. En spécifiant les comptes de service, votre Pods disposent uniquement des autorisations minimales que vous leur avez spécifiées pour interagir avec d'autres services. Pour de plus amples informations, veuillez consulter Rôles IAM pour les comptes de service. -
Enregistrez le contenu suivant dans un fichier nommé
eks-sample-service.yaml
. Kubernetes attribue au service sa propre adresse IP accessible uniquement depuis le cluster. Pour accéder au service depuis l'extérieur de votre cluster, déployez AWS Load Balancer Controllerpour équilibrer la charge du trafic applicatif ou réseau vers le service. -
Appliquer le manifeste du service à votre cluster.
kubectl apply -f eks-sample-service.yaml
-
-
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.
Si vous avez déployé Windows ressources, alors toutes les instances
de la sortie suivante sontlinux
windows
. L'autreexample values
peut être différent de votre sortie.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 ClusterIP10.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 27mDans 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 en voyez également trois Pods. Cela est dû au fait que
3
replicas
nous avons été spécifiés dans l'exemple de manifeste. Pour plus d'informations sur Pods, voir Podsdans le 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'informations surReplicaSets
, consultez ReplicaSetle Kubernetes . Note
Kubernetes conserve le nombre de répliques spécifiées dans le manifeste. S'il s'agissait d'un déploiement de production et que vous vouliez Kubernetes pour redimensionner horizontalement le nombre de répliques ou dimensionner verticalement les ressources de calcul pour Pods, utilisez les Faites évoluer les déploiements de pods avec Horizontal Pod Autoscaler et Ajustez les ressources du pod avec Vertical Pod Autoscaler pour ce faire.
-
Affichez les détails du service déployé. Si vous avez déployé un Windows service, remplacer
parlinux
windows
.kubectl -n eks-sample-app describe service eks-sample-
linux
-serviceL'exemple qui suit illustre un résultat.
Si vous avez déployé Windows ressources, alors toutes les instances
de la sortie suivante sontlinux
windows
. L'autreexample values
peut être différent de votre sortie.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 au sein du cluster, mais il n'est pas accessible depuis l'extérieur du cluster. Les valeurs pourEndpoints
sont les adresses IP attribuées depuis votre adresse VPC à Pods qui font partie du service. -
Consultez les détails de l'un des Pods répertorié dans la sortie lorsque vous avez consulté l'espace de noms lors d'une étape précédente. Si vous avez déployé un Windows app, remplacez
parlinux
windows
et remplacez
par la valeur renvoyée pour l'un de vos Pods.776d8f8fd8-78w66
kubectl -n eks-sample-app describe pod eks-sample-
linux
-deployment-65b7669776-m6qxz
Sortie abrégée
Si vous avez déployé Windows ressources, alors toutes les instances
de la sortie suivante sontlinux
windows
. Les autres
peuvent être différents de votre sortie.example values
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 à Pod à partir du CIDR bloc attribué au sous-réseau dans lequel se trouve le nœud. Si vous préférez attribuer Pods Adresses IP provenant de différents CIDR blocs, vous pouvez modifier le comportement par défaut. Pour de plus amples informations, veuillez consulter Déploiement pods dans des sous-réseaux alternatifs avec mise en réseau personnalisée. Vous pouvez également constater que le Kubernetes le planificateur a programmé le Pod sur leNode
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 Pods, services, déploiements et autres Kubernetes ressources dans le AWS Management Console. Pour de plus amples informations, veuillez consulter Vue Kubernetes ressources dans le AWS Management Console.
-
Exécutez un shell sur le Pod que vous avez décrit à l'étape précédente, en le
remplaçant par l'identifiant de l'un de vos Pods.65b7669776-m6qxz
-
À partir du Pod shell, affichez la sortie du serveur Web qui a été installé avec 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é avec un EKS cluster Amazon, par défaut.
-
À partir du Pod shell, affichez le DNS serveur pour le Pod.
-
Déconnectez-vous du Pod en tapant
exit
. -
Une fois que vous avez terminé avec l'application d'exemple, vous pouvez supprimer l'espace de noms, le service et le déploiement d'exemple avec 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 :