Questo documento descrive i fondamenti di base della piattaforma di orchestrazione dei container open source Kubernetes. Molti componenti di Google Distributed Cloud (GDC) air-gapped si basano 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 la lettura consigliata 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 all'interno del gruppo di operatori dell'infrastruttura responsabili dell'installazione e della manutenzione dell'infrastruttura software e hardware GDC sottostante.
- Amministratori all'interno del gruppo di amministratori della piattaforma responsabili di progettare architetture di infrastrutture e applicazioni resilienti su GDC.
- Gli sviluppatori all'interno del gruppo di operatori dell'applicazione responsabili della creazione delle applicazioni.
Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC air-gap.
Informazioni su Kubernetes
Kubernetes è una piattaforma di orchestrazione dei container open source. Un cluster Kubernetes è un insieme di macchine worker denominate 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 garantiscono l'esecuzione di un numero specifico di repliche di pod. Per fornire endpoint di rete stabili, come indirizzi IP e nomi DNS per l'accesso ai pod, Kubernetes utilizza i servizi.
Poiché l'archiviazione dei container è temporanea per impostazione predefinita, Kubernetes offre varie astrazioni 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 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 in tutta la documentazione di GDC. 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 workload 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 di 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 viene eseguito il deployment di un'applicazione containerizzata.
Scopri di più nella documentazione di Kubernetes:
Control plane Kubernetes
Il control plane di Kubernetes è un insieme di componenti di sistema che gestiscono lo stato generale del cluster, tra cui il server API Kubernetes che ti consente di interagire con i cluster e le applicazioni utilizzando la CLI 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 è fornito e gestito da GDC.
Per maggiori informazioni, consulta la documentazione Componenti del control plane di Kubernetes.
Pod
In Kubernetes, le applicazioni containerizzate vengono eseguite all'interno di un pod. Un pod è l'unità di calcolo più piccola di cui può essere eseguito il deployment, che puoi creare e gestire in Kubernetes. Un pod ha 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 hai più team di applicazioni che eseguono carichi di lavoro su un singolo cluster.
Per saperne di più, consulta la documentazione relativa agli spazi dei nomi di Kubernetes.
Controller
I controller Kubernetes monitorano e gestiscono lo stato dei cluster e dei workload in base allo stato che specifichi (ad esempio "Vorrei eseguire tre di questo pod su questo cluster, con questo container in ogni pod"). Controller diversi monitorano diversi tipi di risorse Kubernetes, tra cui:
I controller Kubernetes monitorano e gestiscono lo stato dei cluster e dei workload in base allo stato specificato. Ad esempio, puoi impostare il comportamento di un cluster in modo che esegua tre pod, con un contenitore designato in ciascun pod. Controller diversi 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 distribuite tra i nodi di un cluster. Un deployment sostituisce automaticamente tutti i pod che non funzionano o che non rispondono. - StatefulSet: una risorsa personalizzata
StatefulSetè simile a un deployment, ma mantiene un'identità univoca permanente per ciascuno dei suoi pod.StatefulSetpossono essere utili nelle applicazioni con stato persistente, come le applicazioni stateful. - DaemonSet: una risorsa personalizzata
DaemonSetti consente di aggiungere pod predefiniti ad alcuni o a tutti i tuoi nodi. Si tratta spesso di servizi di assistenza per i tuoi 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 solitamente 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 suoi 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 da poter raggiungere le applicazioni dall'esterno del cluster.
Kubernetes dispone anche di 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 da
gcloud CLI.
Per saperne di più, consulta la documentazione Servizi di Kubernetes.
Archiviazione
Se le tue applicazioni devono salvare dati che esistono oltre il ciclo di vita del pod, ad esempio nelle applicazioni stateful, puoi utilizzare un oggetto PersistentVolume Kubernetes per eseguire il provisioning di questo spazio di archiviazione. Puoi anche scegliere di utilizzare
l'archiviazione temporanea, che viene eliminata 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'controllo dell'accesso basato sui ruoli (RBAC) che consente di creare criteri di autorizzazione per accedere ai cluster e alle relative risorse. Quando utilizzi GDC, spesso utilizzi una combinazione di Kubernetes RBAC e Identity and Access Management (IAM) di GDC per proteggere le tue applicazioni.
Per ulteriori informazioni, consulta la documentazione sul controllo dell'accesso basato sui ruoli di Kubernetes.
Letture consigliate
Questa sezione fornisce link a 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 approfondita di Kubernetes.
- Tutorial: Learn Kubernetes basics: Scopri le nozioni di base di Kubernetes con un esempio.
- Tutorial su Kubernetes: quando sarai pronto ad andare oltre le nozioni di base, questa sezione della documentazione di Kubernetes fornisce tutorial su una serie di argomenti di Kubernetes, dalle applicazioni stateful alla sicurezza.
Documentazione di riferimento
- Glossario di Kubernetes: un elenco completo e standardizzato della terminologia di Kubernetes. Se non hai familiarità con un termine di Kubernetes, consulta il glossario.
Passaggi successivi
- Workload Kubernetes per l'alta affidabilità
- Cluster Kubernetes in GDC
- Carichi di lavoro con container in GDC