Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementare un'applicazione di esempio
In questa sezione, imparerai a implementare un'applicazione di esempio sul cluster.
Prerequisiti
-
Un cluster Kubernetes esistente cluster con almeno un nodo. Se non si dispone di un cluster Amazon EKS esistente, è possibile implementarne uno utilizzando una delle guide su Guida introduttiva ad Amazon EKS. Se stai eseguendo l'implementazione di un'applicazione Windows, allora il supporto Windows deve essere abilitato per il cluster e almeno un nodo Windowsdi Amazon EC2.
-
Kubectl
installato sul computer. Per ulteriori informazioni, consulta Installazione o aggiornamento di kubectl. -
Kubectl
configurato per comunicare con il cluster. Per ulteriori informazioni, consulta Creazione o aggiornamento di un file kubeconfig per un cluster Amazon EKS. -
Se si prevede di implementare il carico di lavoro di esempio in Fargate, è necessario disporre di un profilo Fargate che include lo stesso spazio dei nomi creato in questo tutorial, che è
eks-sample-app
, a meno che non cambi il nome. Se hai usato una delle guide alle operazioni di base per creare il cluster, dovrai creare un nuovo profilo o aggiungere lo spazio dei nomi al profilo esistente, poiché il profilo creato nelle guide introduttive non specifica lo spazio dei nomi utilizzato in questo tutorial. Il VPC deve disporre di almeno una sottorete privata.
Per implementare un'applicazione di esempio
Sebbene molte variabili siano modificabili nei passaggi seguenti, si consiglia di modificare solo i valori delle variabili, se specificato. Con una migliore conoscenza dei Pods, delle implementazioni e dei servizi Kubernetes, puoi provare a modificare altri valori.
-
Crea uno spazio dei nomi . Uno spazio dei nomi consente di raggruppare le risorse in Kubernetes. Per ulteriori informazioni, consulta Spazi dei nomi
nella documentazione di Kubernetes. Se si prevede di implementare l'applicazione di esempio su AWS Fargate, assicurati che il valore per namespace
nel AWS Fargate profilo siaeks-sample-app
.kubectl create namespace eks-sample-app
-
Crea una implementazione Kubernetes. Questa implementazione di esempio estrae un'immagine container da un repository pubblico e ne implementa tre repliche (singoli Pods) sul cluster. Per ulteriori informazioni, consulta Implementazioni
nella documentazione di Kubernetes. Puoi implementare l'applicazione su nodi Linux o Windows. Se stai eseguendo l'implementazione su Fargate, potrai implementare solo un'applicazione Linux. -
Salva i seguenti contenuti in un file denominato
eks-sample-deployment.yaml
. I container nell'applicazione di esempio non utilizzano l'archiviazione di rete, ma potrebbe essere necessaria per determinate applicazioni. Per ulteriori informazioni, consulta Archiviazione. -
Applicare il manifesto di implementazione al cluster.
kubectl apply -f eks-sample-deployment.yaml
-
-
Crea un servizio. Un servizio consente di accedere a tutte le repliche tramite un unico indirizzo IP o nome. Per ulteriori informazioni, consulta Servizi
nella documentazione di Kubernetes. Anche se non implementate nell'applicazione di esempio, se hai applicazioni che devono interagire con altri servizi AWS, ti consigliamo di creare gli account di servizio Kubernetes per i tuoi Pods e associarli agli account AWS IAM. Specificando gli account di servizio, i Pods avranno solo le autorizzazioni minime necessarie per interagire con altri servizi. Per ulteriori informazioni, consulta Ruoli IAM per gli account di servizio. -
Salva il seguente contenuto in un file denominato
eks-sample-service.yaml
. Kubernetes assegna al servizio il proprio indirizzo IP a cui è possibile accedere solo dall'interno del cluster. Per accedere al servizio dall'esterno del cluster, implementare il AWS Load Balancer Controller per bilanciare il carico dell'applicazione o del traffico di rete verso il servizio. -
Applicare il manifesto del servizio al cluster.
kubectl apply -f eks-sample-service.yaml
-
-
Visualizzare tutte le risorse nello spazio dei nomi
eks-sample-app
.kubectl get all -n eks-sample-app
Di seguito viene riportato un output di esempio:
Se hai implementato risorse Windows, allora tutte le istanze di
nel seguente output sarannolinux
windows
. Gli altrivalori di esempio
possono essere diversi dall'output.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 27mNell'output, è possibile visualizzare il servizio e l'implementazione specificati nel manifesto di esempio implementato nei passaggi precedenti. Saranno visualizzati anche tre Pods. Questo perché
3
replicas
sono state specificate nel manifesto di esempio. Per ulteriori informazioni su Pods, consulta Podnella documentazione di Kubernetes. Kubernetes crea automaticamente la risorsa replicaset
, anche se non è specificato nei manifesti di esempio. Per ulteriori informazioni ReplicaSetin merito ReplicaSets
, consulta la Kubernetes documentazione.Nota
Kubernetes mantiene il numero di repliche specificate nel manifesto. Se si tratta di un'implementazione di produzione e si desidera che Kubernetes dimensioni orizzontalmente il numero di repliche e dimensioni verticalmente le risorse di calcolo per i Pods, utilizza Horizontal Pod Autoscaler e Vertical Pod Autoscaler.
-
Visualizzare i dettagli del servizio implementato. Se hai implementato un servizio Windows, sostituisci
conlinux
windows
.kubectl -n eks-sample-app describe service eks-sample-
linux
-serviceDi seguito viene riportato un output di esempio:
Se hai implementato risorse Windows, allora tutte le istanze di
nel seguente output sarannolinux
windows
. Gli altrivalori di esempio
possono essere diversi dall'output.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>Nell'output precedente, il valore per
IP:
è un indirizzo IP univoco che può essere raggiunto da qualsiasi nodo o Pod all'interno del cluster ma non dall'esterno del cluster. I valori perEndpoints
sono indirizzi IP assegnati all'interno del VPC ai Pods che fanno parte del servizio. -
Visualizzare i dettagli di uno dei Pods elencati nell'output al momento della visualizzazione dello spazio dei nomi in una fase precedente. Se hai implementato un'app Windows, sostituisci
conlinux
windows
e
con il valore restituito per uno dei tuoi Pods.776d8f8fd8-78w66
kubectl -n eks-sample-app describe pod eks-sample-
linux
-deployment-65b7669776-m6qxz
Output abbreviato
Se hai implementato risorse Windows, allora tutte le istanze di
nel seguente output sarannolinux
windows
. Gli altri
possono essere diversi dall'output.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 [...]Nell'output precedente, il valore per
IP:
è un IP univoco assegnato al Pod dal blocco CIDR assegnato alla sottorete in cui si trova il nodo. Se preferisci che ai Pods vengano assegnati indirizzi IP da blocchi CIDR diversi, puoi modificare il comportamento di default. Per ulteriori informazioni, consulta Rete personalizzata per i pod. Puoi vedere anche come il pianificatore Kubernetesabbia pianificato il Pod sulNode
con l'indirizzo IP
.192.168.45.132
Suggerimento
Anziché utilizzare la riga di comando, puoi visualizzare molti dettagli su Pods, servizi, implementazioni e altre risorse Kubernetes nella AWS Management Console. Per ulteriori informazioni, consulta Visualizzazione delle risorse Kubernetes.
-
Esegui una shell sul Pod descritto nel passaggio precedente, sostituendo
con l'ID di uno dei Pods.65b7669776-m6qxz
-
Dalla shell del Pod, visualizza l'output dal server Web installato con l'implementazione in un passaggio precedente. È necessario specificare solo il nome del servizio. Questo viene risolto sull'indirizzo IP del servizio da CoreDNS, implementato con un cluster Amazon EKS, per impostazione predefinita.
-
Dalla shell del Pod, visualizza il server DNS per il Pod.
-
Disconnettersi dal Pod digitando
exit
. -
Una volta terminato l'uso dell'applicazione di esempio, sarà possibile rimuovere lo spazio dei nomi, il servizio e l'implementazione di esempio con il seguente comando.
kubectl delete namespace eks-sample-app
Fasi successive
Dopo aver distribuito l'applicazione di esempio, potresti provare alcuni dei seguenti esercizi: