Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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 esistente Kubernetes cluster con almeno un nodo. Se non disponi di un EKS cluster Amazon esistente, puoi implementarne uno utilizzando una delle Inizia a usare Amazon EKS guide. Se stai implementando un Windows applicazione, allora devi avere Windows supporto abilitato per il tuo cluster e almeno un Amazon EC2 Windows nodo.
-
Kubectl
installato sul computer. Per ulteriori informazioni, consulta Configurazione kubectl e eksctl. -
Kubectl
configurato per comunicare con il cluster. Per ulteriori informazioni, consulta Connessione kubectl a un EKS cluster creando un kubeconfig file. -
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. VPCÈ inoltre necessario 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. Una volta che avrai una migliore comprensione di Kubernetes Pods, implementazioni e servizi, puoi sperimentare la modifica di altri valori.
-
Crea uno spazio dei nomi . Un namespace consente di raggruppare le risorse in Kubernetes. Per ulteriori informazioni, vedete Namespace
in Kubernetes documentazione. Se si prevede di implementare l'applicazione di esempio su Semplifica la gestione dell'elaborazione con AWS Fargate, assicurati che il valore per namespace
nel Definisci quale Pods utilizzo al AWS Fargate momento del lancio siaeks-sample-app
.kubectl create namespace eks-sample-app
-
Crea un Kubernetes distribuzione. Questa implementazione di esempio estrae un'immagine del contenitore da un archivio pubblico e distribuisce tre repliche (singole). Pods) di esso nel tuo cluster. Per ulteriori informazioni, consulta Implementazioni
nella Kubernetes documentazione. È possibile distribuire l'applicazione su Linux oppure Windows nodi. Se ti stai schierando a Fargate, puoi solo schierare un Linux applicazione. -
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 Archivia i dati delle applicazioni per il tuo cluster. -
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, vedere Service in
Kubernetes documentazione. Sebbene non sia implementato nell'applicazione di esempio, se disponi di applicazioni che devono interagire con altri AWS servizi, ti consigliamo di creare Kubernetes account di servizio per i tuoi Podse associarli agli AWS IAM account. Specificando gli account di servizio, il Pods dispongono solo delle autorizzazioni minime specificate per consentire loro di interagire con altri servizi. Per ulteriori informazioni, consulta Ruoli IAM per gli account di servizio. -
Salva i contenuti seguenti in un file denominato
eks-sample-service.yaml
. Kubernetes assegna al servizio il proprio indirizzo IP accessibile solo dall'interno del cluster. Per accedere al servizio dall'esterno del cluster, implementa il AWS Load Balancer Controllerper 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 distribuito Windows risorse, quindi tutte le istanze dell'
output seguente sono.linux
windows
L'altroexample values
potrebbe essere diverso dal tuo 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. Ne vedi anche tre Pods. Questo perché
3
replicas
sono stati specificati nel manifesto di esempio. Per ulteriori informazioni sull' Pods, vedete Podsin Kubernetes documentazione. Kubernetes crea automaticamente la replicaset
risorsa, anche se non è specificata nei manifesti di esempio. Per ulteriori informazioni suReplicaSets
, vedere ReplicaSetin Kubernetes documentazione. Nota
Kubernetes mantiene il numero di repliche specificate nel manifesto. Se questa fosse una distribuzione di produzione e tu volessi Kubernetes per scalare orizzontalmente il numero di repliche o scalare verticalmente le risorse di elaborazione per Pods, usa Implementazione scalabile dei pod con Horizontal Pod Autoscaler e the per eseguire questa operazione. Modifica le risorse del pod con Vertical Pod Autoscaler
-
Visualizzare i dettagli del servizio implementato. Se hai distribuito un Windows servizio, sostituire
conlinux
windows
.kubectl -n eks-sample-app describe service eks-sample-
linux
-serviceDi seguito viene riportato un output di esempio:
Se hai distribuito Windows risorse, quindi tutte le istanze dell'
output seguente sono.linux
windows
L'altroexample values
potrebbe essere diverso dal tuo 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 di
IP:
è un indirizzo IP univoco raggiungibile da qualsiasi nodo o Pod all'interno del cluster, ma non può essere raggiunto dall'esterno del cluster. I valori perEndpoints
sono gli indirizzi IP assegnati dall'interno dell'utente VPC al Pods che fanno parte del servizio. -
Visualizza i dettagli di uno dei Pods elencato nell'output quando hai visualizzato il namespace in un passaggio precedente. Se hai distribuito un Windows app, sostituisci
conlinux
windows
e sostituisci
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 distribuito Windows risorse, quindi tutte le istanze dell'
output seguente sono.linux
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 di
IP:
è un IP univoco assegnato a Pod dal CIDR blocco assegnato alla sottorete in cui si trova il nodo. Se preferisci assegnare Pods Indirizzi IP di CIDR blocchi diversi, puoi modificare il comportamento predefinito. Per ulteriori informazioni, consulta Implementazione pods in sottoreti alternative con reti personalizzate. Puoi anche vedere che il Kubernetes lo scheduler ha pianificato il Pod sulNode
con l'indirizzo IP
.192.168.45.132
Suggerimento
Piuttosto che usare la riga di comando, puoi visualizzare molti dettagli su Pods, servizi, implementazioni e altro Kubernetes risorse in. AWS Management Console Per ulteriori informazioni, consulta Vista Kubernetes risorse nel AWS Management Console.
-
Esegui una shell su Pod che hai descritto nel passaggio precedente, sostituendolo
con l'ID di uno dei tuoi Pods.65b7669776-m6qxz
-
Dal Pod shell, visualizza l'output del server Web installato con la distribuzione in un passaggio precedente. È necessario specificare solo il nome del servizio. Viene risolto nell'indirizzo IP del servizio da CoreDNS, che viene distribuito con un EKS cluster Amazon, per impostazione predefinita.
-
Dal Pod shell, visualizza il DNS server per il Pod.
-
Disconnettersi da Pod
exit
digitando. -
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: