Aiutaci a migliorare questa pagina
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à.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
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à.
Implementa un'applicazione di gioco e conserva i relativi dati su Amazon EKS
Questo tutorial di avvio rapido mostra i passaggi per distribuire l'applicazione di esempio di gioco 2048 e mantenere i suoi dati su un cluster Amazon EKS Auto Mode utilizzando eksctl.
Man mano che procediamo, ti guideremo attraverso il processo di configurazione del cluster. La modalità automatica di Amazon EKS automatizzerà le attività per la creazione di un nodo utilizzando un'istanza EC2 gestita, la creazione di un sistema di bilanciamento del carico delle applicazioni e la creazione di un volume EBS.
Nel complesso, distribuirai un carico di lavoro di esempio con le annotazioni personalizzate necessarie per l'integrazione completa con i servizi. AWS
In questo tutorial
Utilizzando il modello di eksctl
cluster che segue, creerai un cluster con EKS Auto Mode per il provisioning automatico dei nodi.
Configurazione VPC Quando si utilizza il modello di cluster eksctl che segue, eksctl crea automaticamente un Virtual Private Cloud ( IPv4 VPC) per il cluster. Per impostazione predefinita, eksctl configura un VPC che soddisfa tutti i requisiti di rete, oltre a creare endpoint pubblici e privati.
Instance Management EKS Auto Mode aggiunge o rimuove dinamicamente i nodi nel cluster EKS in base alle esigenze delle applicazioni Kubernetes.
Persistenza dei dati Utilizzate la funzionalità di archiviazione a blocchi di EKS Auto Mode per garantire la persistenza dei dati delle applicazioni, anche in scenari che prevedono riavvii o guasti dei pod.
Accesso esterno alle app Utilizza la funzionalità di bilanciamento del carico di EKS Auto Mode per effettuare il provisioning dinamico di un Application Load Balancer (ALB).
Prerequisiti
Prima di iniziare, assicurati di avere i seguenti prerequisiti configurati per utilizzare Amazon EKS:
-
Configura la AWS CLI e configura le credenziali
-
Installa eksctl
-
Installa kubectl
Per ulteriori informazioni, consulta Configurazione per l'utilizzo di Amazon EKS.
Configura il cluster
In questa sezione, creerai un cluster utilizzando EKS Auto Mode per il provisioning dinamico dei nodi.
Crea un cluster-config.yaml
file e incolla i seguenti contenuti al suo interno. Sostituisci region-code
con una regione valida, ad esempious-east-1
:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: web-quickstart
region: <region-code>
autoModeConfig:
enabled: true
Ora siamo pronti per creare il cluster.
Crea il cluster Amazon EKS:
eksctl create cluster -f cluster-config.yaml
Importante
Se non usi eksctl per creare il cluster, devi etichettare manualmente le sottoreti VPC.
Crea IngressClass
Crea un Kubernetes IngressClass
per la modalità automatica EKS. IngressClass Definisce come EKS Auto Mode gestisce le risorse di Ingress. Questo passaggio configura la capacità di bilanciamento del carico di EKS Auto Mode. Quando crei risorse Ingress per le tue applicazioni, EKS Auto Mode le utilizza per fornire e IngressClass gestire automaticamente i sistemi di bilanciamento del carico, integrando le tue applicazioni Kubernetes con i servizi di bilanciamento del carico. AWS
Salva ingressclass.yaml
il seguente file yaml come:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: alb
annotations:
ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: eks.amazonaws.com/alb
Applica il IngressClass al tuo cluster:
kubectl apply -f ingressclass.yaml
Implementa l'applicazione di esempio del gioco 2048
In questa sezione, ti illustreremo i passaggi per implementare il popolare «gioco 2048" come applicazione di esempio all'interno del cluster. Il manifesto fornito include annotazioni personalizzate per Application Load Balancer (ALB). Queste annotazioni si integrano e indicano a EKS di gestire il traffico HTTP in entrata come «rivolto a Internet» e di indirizzarlo al servizio appropriato nel namespace utilizzando il tipo di destinazione «ip». game-2048
Nota
L'docker-2048
immagine nell'esempio è un'immagine di x86_64
contenitore e non verrà eseguita su altre architetture.
-
Crea uno spazio dei nomi Kubernetes chiamato con il flag.
game-2048
--save-config
kubectl create namespace game-2048 --save-config
Dovresti vedere il seguente messaggio di risposta:
namespace/game-2048 created
-
Distribuisci l'applicazione 2048 Game Sample.
kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yaml
Questo manifest configura Kubernetes Deployment, Service e Ingress per il
game-2048
namespace, creando le risorse necessarie per distribuire ed esporre l'applicazione all'interno del cluster.game-2048
Include la creazione di un servizio denominatoservice-2048
che espone la distribuzione sulla porta80
e una risorsa Ingress denominataingress-2048
che definisce le regole di routing per il traffico HTTP in entrata e le annotazioni per un Application Load Balancer (ALB) con accesso a Internet. Dovresti vedere il seguente messaggio di risposta:namespace/game-2048 configured deployment.apps/deployment-2048 created service/service-2048 created ingress.networking.k8s.io/ingress-2048 created
-
Eseguite il comando seguente per ottenere la risorsa Ingress per il namespace.
game-2048
kubectl get ingress -n game-2048
Dovresti vedere il seguente messaggio di risposta:
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com 80 31s
Dovrai attendere alcuni minuti per il provisioning dell'Application Load Balancer (ALB) prima di iniziare i passaggi seguenti.
-
Apri un browser Web e inserisci il
ADDRESS
passaggio precedente per accedere all'applicazione Web. Per esempio:k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com
Dovresti vedere il gioco 2048 nel tuo browser. Gioca!
Dati persistenti utilizzando la modalità automatica di Amazon EKS
Ora che il gioco 2048 è attivo e funzionante sul tuo cluster Amazon EKS, è il momento di garantire che i tuoi dati di gioco siano conservati in modo sicuro utilizzando la funzionalità di storage a blocchi di Amazon EKS Auto Mode.
-
Creare un file denominato
storage-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"
-
Applica:
StorageClass
kubectl apply -f storage-class.yaml
-
Crea un Persistent Volume Claim (PVC) per richiedere lo spazio di archiviazione per i tuoi dati di gioco. Crea un file denominato
ebs-pvc.yaml
e aggiungi il seguente contenuto:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc namespace: game-2048 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: auto-ebs-sc
-
Applica il PVC al tuo cluster:
kubectl apply -f ebs-pvc.yaml
Dovresti vedere il seguente messaggio di risposta:
persistentvolumeclaim/game-data-pvc created
-
Ora devi aggiornare la distribuzione del gioco 2048 per utilizzare questo PVC per archiviare i dati. La seguente distribuzione è configurata per utilizzare il PVC per l'archiviazione dei dati di gioco. Crea un file denominato
ebs-deployment.yaml
e aggiungi i seguenti contenuti:apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: replicas: 3 # Adjust the number of replicas as needed selector: matchLabels: app.kubernetes.io/name: app-2048 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: game-data mountPath: /var/lib/2048 volumes: - name: game-data persistentVolumeClaim: claimName: game-data-pvc
-
Applica la distribuzione aggiornata:
kubectl apply -f ebs-deployment.yaml
Dovresti vedere il seguente messaggio di risposta:
deployment.apps/deployment-2048 configured
Con questi passaggi, il gioco 2048 sul cluster è ora configurato per rendere persistenti i dati utilizzando la funzionalità di storage a blocchi di Amazon EKS Auto Mode. Ciò garantisce che i progressi e i dati di gioco siano al sicuro anche in caso di guasti ai pod o ai nodi.
Se ti è piaciuto questo tutorial, faccelo sapere fornendo un feedback, così saremo in grado di fornirti altri tutorial rapidi di utilizzo specifici per ogni caso, come questo.
Elimina il cluster e i nodi
Dopo aver finito con il cluster che hai creato per questo tutorial, dovresti ripulirlo eliminando con il seguente comando. Se vuoi fare di più con questo cluster prima di ripulirlo, vedi Passaggi successivi.
eksctl delete cluster -f ./cluster-config.yaml
EKS pulirà automaticamente tutti i nodi a cui ha fornito il provisioning quando il cluster viene eliminato.