Questo documento descrive i concetti fondamentali di base della piattaforma di orchestrazione di container open source Kubernetes. Molti componenti di Google Distributed Cloud (GDC) air-gapped sono basati su Kubernetes e gran parte della documentazione presuppone che tu abbia già familiarità con i concetti e la terminologia di base di Kubernetes. Se non hai familiarità con Kubernetes, utilizza questo documento come riferimento per le letture consigliate per iniziare.
L'apprendimento delle nozioni di base di Kubernetes è essenziale per progettare, eseguire il deployment e gestire le applicazioni GDC e i componenti di sistema sottostanti. I seguenti professionisti tecnici devono comprendere Kubernetes per utilizzare correttamente GDC:
- Operatori del gruppo di operatori dell'infrastruttura responsabili dell'installazione e della manutenzione dell'infrastruttura software e hardware sottostante di GDC.
- Amministratori del gruppo di amministratori della piattaforma responsabili della progettazione di architetture di applicazioni e infrastrutture resilienti su GDC.
- Sviluppatori del gruppo di operatori delle applicazioni responsabili della creazione di applicazioni.
Per saperne di più, consulta Pubblico della documentazione di GDC con air gap.
Informazioni su Kubernetes
Kubernetes è una piattaforma di orchestrazione di container open source. Nella sua forma più semplice, un cluster Kubernetes è un insieme di macchine worker chiamate nodi che eseguono applicazioni containerizzate. L'intero cluster è gestito dal control plane, che include componenti come il server API, lo scheduler e il database etcd, ed è responsabile del mantenimento dello stato del cluster.
Le applicazioni vengono pacchettizzate in pod, le unità di cui è possibile eseguire il deployment più piccole in Kubernetes, che possono contenere uno o più container ed essere eseguite sui nodi. Per organizzare le risorse all'interno di un cluster, spesso per team o ambienti diversi, Kubernetes utilizza gli spazi dei nomi.
Il ciclo di vita e lo stato dei pod sono gestiti dai controller. Ad esempio, gli oggetti Deployment gestiscono gli aggiornamenti in sequenza e gli oggetti ReplicaSet assicurano che sia in esecuzione un numero specifico di repliche dei pod. Per fornire endpoint di rete stabili, come indirizzi IP e nomi DNS per l'accesso ai pod, Kubernetes utilizza i servizi.
Poiché lo spazio di archiviazione dei container è effimero per impostazione predefinita, Kubernetes offre varie astrazioni dello spazio di archiviazione, come volumi e volumi permanenti, per gestire i dati.
Per proteggere l'accesso alle risorse del cluster e all'API Kubernetes, Kubernetes utilizza il controllo dell'accesso basato sui ruoli (RBAC) per definire ruoli, ruoli cluster e associazioni per concedere autorizzazioni specifiche a utenti e service account.
Concetti fondamentali
Di seguito sono riportati alcuni concetti chiave che utilizziamo nella documentazione di GDC. Non si tratta di un elenco esaustivo dei concetti di Kubernetes. Puoi trovare molto altro da leggere ed esplorare negli argomenti forniti nella documentazione di Kubernetes e nelle letture consigliate.
Nodi e cluster
Tutti i carichi di lavoro Kubernetes vengono eseguiti sui nodi. In GDC, un nodo è una macchina virtuale (VM). Su altre piattaforme Kubernetes, un nodo può essere una macchina fisica o virtuale. Ogni nodo è gestito dal control plane Kubernetes e dispone di tutti i componenti necessari per eseguire i pod. Un cluster è un insieme di nodi che possono essere trattati insieme come una singola entità, su cui esegui il deployment di un'applicazione containerizzata.
Scopri di più nella documentazione di Kubernetes:
Control plane Kubernetes
Il control plane Kubernetes è un insieme di componenti di sistema che gestiscono lo stato generale del cluster, tra cui il server API Kubernetes che consente di interagire con i cluster e le applicazioni utilizzando l'interfaccia a riga di comando kubectl e altri strumenti, uno scheduler per pianificare i pod sui nodi disponibili e i controller che monitorano e gestiscono lo stato del cluster. Il control plane viene fornito e gestito da GDC.
Per saperne di più, consulta la documentazione Componenti del control plane 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 include uno o più container. Quando un pod esegue più container, ad esempio un server delle 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:
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 più team di applicazioni eseguono carichi di lavoro su un singolo cluster.
Per saperne di più, consulta la documentazione Spazi dei nomi Kubernetes .
Controller
I controller Kubernetes monitorano e gestiscono lo stato dei cluster e dei carichi di lavoro in base allo stato specificato (ad esempio, "Vorrei eseguire tre di questi pod su questo cluster, con questo container in ogni pod"). Diversi controller monitorano diversi tipi di risorse Kubernetes, tra cui:
I controller Kubernetes monitorano e gestiscono lo stato dei cluster e dei carichi di lavoro in base allo stato specificato. Ad esempio, puoi impostare il comportamento di un cluster in modo che esegua tre pod, con un container designato in ogni pod. Diversi controller monitorano diversi tipi di risorse Kubernetes, tra cui:
- Deployment: una risorsa personalizzata
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 tutti i pod non idonei o che non rispondono. - StatefulSet: una risorsa personalizzata
StatefulSetè simile a un deployment, ma mantiene un'identità univoca permanente per ogni pod. Le risorseStatefulSetpossono essere utili nelle applicazioni con stato permanente, come le applicazioni con stato. - DaemonSet: una risorsa personalizzata
DaemonSetconsente di aggiungere pod predefiniti ad alcuni o a tutti i nodi. Si tratta spesso di servizi di assistenza per i carichi di lavoro, come un daemon di raccolta dei log o un daemon di monitoraggio. - ReplicaSet: una risorsa personalizzata
ReplicaSetè un insieme di pod identici. UnReplicaSetviene in genere gestito come parte di una risorsaDeployment.
Scopri di più nella documentazione di Kubernetes:
Servizio Kubernetes
Per impostazione predefinita, non puoi controllare su quale nodo del cluster viene eseguito un pod, quindi 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 sopra i relativi pod
chiamata
servizio Kubernetes.
Un servizio Kubernetes fornisce un endpoint di rete stabile per un insieme di pod.
Esistono diversi
tipi di servizi,
inclusi i servizi LoadBalancer, che espongono un indirizzo IP esterno in modo che
tu possa raggiungere le applicazioni dall'esterno del cluster.
Kubernetes ha anche un sistema DNS integrato per la risoluzione degli indirizzi interni, che assegna un nome 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 all'esterno del cluster, ad esempio dalla CLI gdcloud.
Per saperne di più, consulta la documentazione Servizi Kubernetes.
Archiviazione
Se le tue applicazioni devono salvare dati che esistono oltre la durata del pod, ad esempio nelle applicazioni con stato, puoi utilizzare un oggetto PersistentVolume Kubernetes per eseguire il provisioning di questo spazio di archiviazione. Puoi anche scegliere di utilizzare lo spazio di archiviazione effimero, che viene eliminato quando il pod corrispondente termina.
Scopri di più nella documentazione di Kubernetes:
Controllo dell'accesso basato sui ruoli
Kubernetes include un meccanismo di controllo dell'accesso basato sui ruoli (RBAC) che consente di creare policy di autorizzazione per l'accesso ai cluster e alle relative risorse. Quando utilizzi GDC, spesso utilizzerai una combinazione di Kubernetes RBAC e Identity and Access Management (IAM) di GDC per proteggere le tue applicazioni.
Per saperne di più, consulta la documentazione Controllo dell'accesso basato sui ruoli di Kubernetes.
Letture consigliate
Questa sezione fornisce link alle risorse consigliate per saperne di più su Kubernetes. In particolare, Kubernetes.io, il sito web ufficiale di Kubernetes, contiene materiale completo e affidabile su tutto ciò che riguarda Kubernetes.
Guide e tutorial esterni
- Panoramica di Kubernetes: una panoramica concettuale completa di Kubernetes.
- Tutorial: Learn Kubernetes basics: scopri le nozioni di base di Kubernetes con un esempio.
- Tutorial di Kubernetes: quando sei pronto per andare oltre le nozioni di base, questa sezione della documentazione di Kubernetes fornisce tutorial su una varietà di argomenti di Kubernetes, dalle applicazioni con stato alla sicurezza.
Documentazione di riferimento
- Glossario di Kubernetes: un elenco completo e standardizzato della terminologia di Kubernetes. Se non hai dubbi su un termine di Kubernetes, consulta il glossario.
Passaggi successivi
- Carichi di lavoro Kubernetes per la HA
- Cluster Kubernetes in GDC
- Carichi di lavoro con container in GDC