Questa pagina spiega come eseguire il deployment di un'applicazione Linux stateless utilizzando Google Kubernetes Engine (GKE). Inoltre, puoi scoprire come il deployment di un'applicazione Windows stateless.
Panoramica
Le applicazioni stateless sono applicazioni che non archiviano dati o lo stato dell'applicazione al cluster o all'archiviazione permanente. Invece, i dati e le risorse lo stato dell'applicazione rimane presso il client, il che rende le applicazioni stateless e scalabile. Ad esempio, un'applicazione frontend è stateless: esegui il deployment di repliche per aumentarne la disponibilità e fare lo scale down quando la domanda è bassa. non hanno bisogno di identità univoche.
Kubernetes utilizza Deployment di deployment di applicazioni stateless pod uniformi e non univoci. I deployment gestiscono lo stato desiderato dei tuoi applicazione: quanti pod devono eseguire la tua applicazione, quale versione dell'immagine container in esecuzione, gli elementi da etichettare ai pod e così via. La lo stato desiderato può essere modificato in modo dinamico attraverso aggiornamenti Specifica del pod.
Le applicazioni stateless sono in contrasto con le applicazioni stateful, che utilizzano spazio di archiviazione permanente per risparmiare dati e quali StatefulSets per eseguire il deployment di pod con identità univoche.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine .
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
Assicurati che l'applicazione containerizzata sia archiviata in un registro di immagini, come Artifact Registry.
Se non hai mai utilizzato GKE, devi completare la guida rapida, in che abiliterai l'API GKE e imparerai come funziona il prodotto.
Struttura di un deployment
Di seguito è riportato un esempio di un semplice file manifest del deployment. Questo
Il deployment crea tre pod replicati con etichetta app=my-app
che eseguono
hello-app
immagine archiviata in Artifact Registry:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
In questo esempio:
.spec.replicas
: indica il numero di pod replicati gestiti dal deployment..spec.template.metadata.labels
: è l'etichetta assegnata a ogni pod, Utilizza il deployment per gestire i pod..spec.template.spec
: è la specifica del pod, che definisce il modo in cui È necessario eseguire il pod.spec.containers
include il nome del container da eseguire in ogni pod e l'immagine container che deve eseguire.
Per ulteriori informazioni sulla specifica del deployment, consulta Riferimento API Deployment.
Creazione di un deployment
Puoi creare un deployment utilizzando uno dei seguenti metodi:
- Puoi utilizzare la funzionalità Esegui il deployment nel menu Carichi di lavoro della console Google Cloud per un semplice deployment a partire da un'immagine container Artifact Registry
Puoi scrivere un manifest di deployment ed eseguire
kubectl apply
per creare la risorsa.
kubectl apply
Puoi creare e aggiornare in modo dichiarativo i deployment dai file manifest
utilizzando kubectl apply
. Questo metodo conserva anche gli aggiornamenti apportati ai live streaming
risorse senza unire nuovamente le modifiche ai file manifest.
Per creare un deployment dal relativo file manifest, esegui questo comando :
kubectl apply -f DEPLOYMENT_FILE
Sostituisci DEPLOYMENT_FILE
con il file manifest, ad esempio config.yaml
.
Puoi utilizzare anche kubectl apply -f DIRECTORY/
per
creare tutti gli oggetti (tranne quelli esistenti) definiti nei file manifest archiviati in un
.
Console
Per creare un deployment, segui questi passaggi:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Fai clic su add_box Esegui il deployment.
In Specifica contenitore, seleziona una delle seguenti opzioni:
Immagine container esistente per scegliere un'immagine container disponibile Artifact Registry o DockerHub. In Percorso immagine, inserisci il percorso dell'immagine container e della versione.
Nuova immagine container per utilizzare un'immagine creata con Cloud Source Repositories e Cloud Build.
Facoltativamente, configura il deployment con:
- Variabili di ambiente da passare nel container.
- Comandi iniziali per personalizzare il punto di ingresso del container in fase di runtime.
Fai clic su Fine, quindi su Continua.
Nella sezione Configurazione, assegna al deployment un Nome applicazione e specifica la classe di Spazio dei nomi in cui eseguire il deployment.
Se vuoi, in Etichette puoi aggiungere Kubernetes Etichette al deployment.
per salvare il file YAML che crea questo deployment Per aggiornarlo in un secondo momento, fai clic su Visualizza YAML. Copia e incolla il YAML in un file, quindi salvalo e fai clic su Chiudi nella finestra di dialogo Output YAML.
Dal menu a discesa Cluster Kubernetes, scegli il cluster che ti interessa.
Fai clic su Esegui il deployment.
Ispezione del deployment
Dopo aver creato un deployment, puoi utilizzare uno dei seguenti metodi per Dopo averlo esaminato:
- Puoi utilizzare il menu Carichi di lavoro
Puoi utilizzare
kubectl describe
ekubectl get
kubectl
Per ottenere informazioni dettagliate sul deployment, esegui questo comando:
kubectl describe deployment DEPLOYMENT_NAME
Sostituisci DEPLOYMENT_NAME
con il nome del deployment.
Per elencare i pod creati dal deployment, esegui questo comando:
kubectl get pods -l KEY=VALUE
In questo comando, il flag -l
indica a kubectl
di ottenere tutti i pod con un
sull'etichetta della coppia chiave-valore. Ad esempio, se hai assegnato al deployment l'etichetta app: my-app
,
eseguirai kubectl get pods -l app=my-app
per vedere i pod con quell'etichetta.
Per ottenere informazioni su un pod specifico:
kubectl describe pod POD_NAME
Per visualizzare il manifest di un deployment, esegui questo comando:
kubectl get deployments DEPLOYMENT_NAME -o yaml
Questo comando visualizza la configurazione attiva del deployment in formato YAML.
Console
Per ispezionare un deployment, segui questi passaggi:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Nell'elenco dei carichi di lavoro, fai clic sul nome del deployment che vuoi controllare.
Nella pagina Dettagli deployment, esegui una delle seguenti operazioni:
- Fai clic sulla scheda Cronologia delle revisioni per vedere la cronologia delle revisioni del deployment.
- Fai clic sulla scheda Eventi per visualizzare tutti gli eventi relativi al deployment.
- Fai clic sulla scheda Log per visualizzare i log delle attività dei container nella scheda Deployment.
- Fai clic sulla scheda YAML per vedere, copiare e scaricare il manifest YAML per il deployment.
Aggiornamento del deployment
Puoi implementare aggiornamenti al specifica del pod, come l'immagine, l'utilizzo/le richieste o la configurazione delle risorse.
Puoi aggiornare un deployment utilizzando i seguenti metodi:
- Puoi utilizzare il menu Aggiornamento in sequenza e l'editor YAML dal Menu Carichi di lavoro della console Google Cloud.
- Puoi apportare modifiche a un file manifest e applicarle con
kubectl apply
- Puoi aggiornare i valori
image
,resources
oselector
della specifica del pod utilizzandokubectl set
. Puoi aggiornare un deployment direttamente dalla tua shell o in un editor preferito utilizzando
kubectl edit
.
kubectl apply
Puoi aggiornare il deployment applicando un file manifest nuovo o aggiornato. È utile per apportare varie modifiche al deployment, ad esempio scaling o per specificare una nuova versione dell'applicazione.
Per aggiornare un deployment, esegui questo comando:
kubectl apply -f DEPLOYMENT_FILE
Sostituisci DEPLOYMENT_FILE
con il file manifest aggiornato.
Il comando kubectl apply
applica un file manifest a una risorsa. Se
la risorsa specificata non esiste, è stata creata dal comando.
kubectl set
Puoi utilizzare kubectl set
per modificare l'immagine e le risorse di un deployment
(richieste o limiti) o campi del selettore.
Per modificare l'immagine di un deployment, esegui questo comando:
kubectl set image deployment DEPLOYMENT_NAME IMAGE IMAGE:TAG
Ad esempio, per aggiornare un deployment dalla versione 1.7.9 alla 1.9.1 di nginx
, esegui
il seguente comando:
kubectl set image deployment nginx nginx=nginx:1.9.1
Console
Per accedere al menu Aggiornamento in sequenza del deployment:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Nell'elenco dei carichi di lavoro, fai clic sul nome del deployment che vuoi modificare.
Fai clic su list Azioni > Aggiornamento in sequenza.
Configura i seguenti parametri facoltativi per la strategia di aggiornamento:
- Numero minimo di secondi pronti:specifica il numero minimo di secondi per i pod appena creati devono essere pronti disponibili.
- Incremento massimo:specifica il numero massimo di che possono essere creati sul numero desiderato di pod. Il valore può essere un un numero assoluto o una percentuale.
- Numero massimo non disponibili: specifica il numero massimo di pod che potrebbero non essere disponibili durante il processo di aggiornamento. Il valore può essere un un numero assoluto o una percentuale.
In Immagini container, inserisci il percorso e la versione dell'immagine container aggiornata.
Fai clic su Aggiorna.
Rollback di un aggiornamento in corso...
Puoi eseguire il rollback di un aggiornamento utilizzando
kubectl rollout undo
Puoi eseguire il rollback di un aggiornamento in corso o completato alla revisione precedente:
kubectl rollout undo deployment my-deployment
Puoi anche eseguire il rollback a una revisione specifica:
kubectl rollout undo deployment my-deployment --to-revision=3
Scalabilità di un deployment
Puoi scalare manualmente un deployment utilizzando la console Google Cloud oppure
kubectl scale
Puoi scoprire di più sulle dei deployment con scalabilità automatica.
kubectl
kubectl scale
può essere utilizzato in qualsiasi momento per scalare il tuo deployment.
Per scalare manualmente un deployment, esegui questo comando:
kubectl scale deployment DEPLOYMENT_NAME --replicas NUMBER_OF_REPLICAS
Sostituisci NUMBER_OF_REPLICAS
con il numero desiderato di pod replicati.
Console
Per scalare un deployment, segui questi passaggi:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Nell'elenco dei carichi di lavoro, fai clic sul nome del deployment che vuoi modificare.
Fai clic su list Azioni > Scala > Modifica repliche
Inserisci il nuovo numero di repliche per il deployment.
Fai clic su Scala.
Eliminazione di un deployment
Puoi eliminare un deployment utilizzando la console Google Cloud oppure
kubectl delete
kubectl
Per eliminare un deployment, esegui questo comando:
kubectl delete deployment DEPLOYMENT_NAME
Console
Per eliminare un deployment, segui questi passaggi:
Vai alla pagina Carichi di lavoro nella console Google Cloud.
Nell'elenco di carichi di lavoro, seleziona uno o più deployment da eliminare.
Fai clic su delete Elimina.
Quando ti viene richiesto di confermare, fai clic su Elimina.