GKE si basa sulla piattaforma di orchestrazione dei container open source Kubernetes e gran parte della documentazione di questo sito presuppone che tu abbia già familiarità con i concetti e la terminologia di base di Kubernetes. Se non lo hai ancora fatto, in questa pagina puoi trovare una rapida panoramica delle nozioni di base di Kubernetes, con link a letture consigliate per iniziare.
Concetti fondamentali
Di seguito sono riportati alcuni concetti chiave che utilizziamo nella documentazione di GKE. Questo non è un elenco esaustivo dei concetti di Kubernetes. Puoi trovare molto altro da leggere ed esplorare negli argomenti forniti dalla documentazione di Kubernetes e nella nostra lettura consigliata.
Nodi e cluster
Tutti i carichi di lavoro Kubernetes vengono eseguiti su nodi. In GKE, un nodo è una macchina virtuale (VM) Compute Engine. Su altre piattaforme Kubernetes, un nodo può essere una macchina fisica o virtuale. Ogni nodo è gestito dal piano di controllo Kubernetes e dispone di tutti i componenti necessari per eseguire i pod. Un cluster è un insieme di nodi che possono essere trattati insieme come un'unica entità, su cui viene eseguito il deployment di un'applicazione containerizzata.
Scopri di più nella documentazione di Kubernetes:
Spazi dei nomi
Gli spazi dei nomi Kubernetes forniscono un meccanismo per raggruppare e selezionare ulteriormente le risorse come pod e servizi all'interno di un cluster, ad esempio se hai più team di applicazioni che eseguono carichi di lavoro su un singolo cluster.
Scopri di più nella documentazione di Kubernetes:
Pod
In Kubernetes, le applicazioni containerizzate vengono eseguite all'interno di un pod. Un pod è l'unità di calcolo di cui è possibile eseguire il deployment più piccola che puoi creare e gestire in Kubernetes. Un pod ha uno o più container. Quando un pod esegue più container (ad esempio un server di applicazioni e un server proxy), i container vengono gestiti come una singola entità e condividono le risorse del pod.
Scopri di più nella documentazione di Kubernetes:
Controller
I controller Kubernetes monitorano e gestiscono lo stato dei cluster e dei workload in base allo stato desiderato specificato (ad esempio, "Vorrei eseguire tre di questo pod su questo cluster, con questo contenitore in ogni pod"). Controller diversi monitorano diversi tipi di risorse Kubernetes, tra cui:
- Deployment: un deployment è un oggetto Kubernetes che rappresenta uno o più pod identici, chiamati repliche. Un deployment esegue più repliche dei pod distribuiti tra i nodi di un cluster. Un deployment sostituisce automaticamente i pod che non rispondono o che si arrestano in modo anomalo.
- StatefulSet: un StatefulSet è simile a un deployment, ma mantiene un'identità univoca permanente per ciascuno dei suoi pod. Gli StatefulSet possono essere utili in applicazioni con stato persistente (applicazioni stateful).
- DaemonSets: un DaemonSet Kubernetes ti consente di aggiungere pod predefiniti ad alcuni o a tutti i tuoi nodi. Spesso si tratta di servizi "helper" per i carichi di lavoro, come un daemon di raccolta dei log o un daemon di monitoraggio.
- ReplicaSets: un ReplicaSet è un insieme di pod identici. Un ReplicaSet viene solitamente gestito nell'ambito di un deployment.
Scopri di più nella documentazione di Kubernetes:
Servizio Kubernetes
Per impostazione predefinita, non puoi controllare su quale nodo del cluster è in esecuzione un pod, pertanto i pod
non hanno indirizzi IP stabili. Per ottenere un indirizzo IP per un'applicazione in esecuzione in Kubernetes, devi definire un'astrazione di rete sui relativi pod chiamata servizio Kubernetes. Un servizio Kubernetes fornisce un endpoint di rete stabile per un insieme di pod.
Esistono diversi tipi di servizio, tra cui i servizi LoadBalancer
che espongono un indirizzo IP esterno in modo da poter raggiungere le applicazioni dall'esterno del cluster.
Kubernetes ha anche un sistema DNS integrato per la risoluzione degli indirizzi interni, che assegna i nomi DNS (ad esempio helloserver.default.cluster.local
) ai servizi. In questo modo, i pod all'interno del cluster possono raggiungere altri pod nel
cluster utilizzando un indirizzo stabile. Non puoi utilizzare questo nome DNS al di fuori del cluster,
ad esempio da Cloud Shell.
Scopri di più nella documentazione di Kubernetes:
Archiviazione
Se le tue applicazioni devono salvare dati esistenti oltre il ciclo di vita del loro pod (applicazioni stateful), puoi utilizzare un oggetto PersistentVolume di Kubernetes per eseguire il provisioning di questo spazio di archiviazione. In GKE, lo spazio di archiviazione dei volumi permanenti è supportato dai dischi Compute Engine. Puoi anche scegliere di utilizzare lo spazio di archiviazione temporaneo, che viene distrutto al termine del pod corrispondente.
Scopri di più nella documentazione di Kubernetes:
Piano di controllo Kubernetes
Il piano di controllo di Kubernetes è un insieme di componenti di sistema che gestiscono lo stato complessivo del cluster, tra cui il server API Kubernetes che consente di interagire con i cluster e le applicazioni utilizzando kubectl
e altri strumenti, uno scheduler per pianificare i pod sui nodi disponibili e i controller che monitorano e gestiscono lo stato del cluster. In GKE, il piano di controllo viene fornito e gestito da Google Cloud.
Scopri di più nella documentazione di Kubernetes:
Controllo degli accessi basato sui ruoli (RBAC)
Kubernetes include un meccanismo di controllo controllo dell'accesso basato sui ruoli (RBAC) che consente di creare criteri di autorizzazione per accedere ai cluster e alle relative risorse. Quando utilizzi GKE, spesso utilizzerai una combinazione di RBAC di Kubernetes e Identity and Access Management di Google Cloud per proteggere le tue applicazioni.
Scopri di più nella documentazione di Kubernetes:
Letture consigliate
Questa sezione fornisce link alle risorse consigliate per scoprire di più su Kubernetes. In particolare, Kubernetes.io, il sito web ufficiale di Kubernetes, offre molti materiali aggiornati e affidabili su tutto ciò che riguarda Kubernetes.
Guide e tutorial
- Panoramica di Kubernetes: una panoramica concettuale completa di Kubernetes. Perché hai bisogno di Kubernetes e cosa può fare è un'ottima introduzione ai problemi che Kubernetes può risolvere.
- Tutorial: scopri le nozioni di base di Kubernetes: illustra le nozioni di base di Kubernetes con un semplice esempio.
- Tutorial: Introduzione ai container: scopri i container e l'orchestrazione dei container con un'applicazione di esempio semplice, terminando con l'esempio in esecuzione su GKE.
- Tutorial su Kubernetes: quando hai imparato le nozioni di base, questa sezione della documentazione di Kubernetes fornisce tutorial su una serie di argomenti, dalle applicazioni con stato alla sicurezza.
Documentazione di riferimento
- Glossario Kubernetes: un elenco completo e standardizzato della terminologia Kubernetes. Se non hai chiarezza su un termine Kubernetes, ecco dove cercarlo.
Video
- Come utilizzare Kubernetes con Google: una playlist di guide video di Google che trattano diverse funzionalità di Kubernetes, con materiale sia per sviluppatori sia per operatori.
Fumetto
- Fumetto su Kubernetes: scopri la storia di Kubernetes e come utilizzarlo per l'integrazione e la distribuzione continue, con l'improbabile aiuto della dea della saggezza (e delle applicazioni containerizzate).