Questa pagina descrive le immagini dei nodi disponibili per i nodi Google Kubernetes Engine (GKE).
I nodi GKE Autopilot utilizzano sempre
Container-Optimized OS con containerd (cos_containerd), che è il
sistema operativo del nodo consigliato. Se utilizzi GKE
Standard, puoi scegliere l'immagine del sistema operativo eseguita su ogni
nodo durante la creazione del cluster o depool di nodiol. Puoi anche eseguire l'upgrade di un cluster Standard esistente per utilizzare un'immagine del nodo diversa. Per
istruzioni su come impostare l'immagine del nodo, consulta
Specifica di un'immagine del nodo.
Immagini dei nodi disponibili
GKE offre le seguenti opzioni di immagini dei nodi per sistema operativo per il tuo cluster:
| Sistema operativo | Immagini dei nodi |
|---|---|
| Container-Optimized OS | |
| Ubuntu | |
| Windows Server |
|
Container-Optimized OS
Le immagini dei nodi Container-Optimized OS di Google sono basate su una versione recente del kernel Linux e sono ottimizzate per migliorare la sicurezza dei nodi. Le immagini Container-Optimized OS sono supportate da un team di Google che può applicare rapidamente patch alle immagini per la sicurezza e iterare sulle funzionalità. Le immagini Container-Optimized OS offrono supporto, sicurezza e stabilità migliori rispetto ad altre immagini.
Per informazioni sul progetto e sulla famiglia di immagini, consulta Progetti di origine delle immagini dei nodi.
Varianti di Container-Optimized OS
Puoi utilizzare la seguente immagine Container-Optimized OS:
- Container-Optimized OS con containerd (
cos_containerd): l'immaginecos_containerdutilizza containerd come runtime del container direttamente integrato con Kubernetes. I cluster GKE Autopilot utilizzano sempre questa immagine. Per saperne di più, consulta Immagini dei nodi Containerd.
Ubuntu
Le immagini dei nodi Ubuntu sono state convalidate in base ai requisiti delle immagini dei nodi di GKE. Devi utilizzare le immagini dei nodi Ubuntu se i tuoi nodi richiedono il supporto per XFS, CephFS o i pacchetti Debian.
Per informazioni sul progetto e sulla famiglia di immagini, consulta Supporto delle funzionalità in base al sistema operativo.
Varianti di Ubuntu
Puoi utilizzare la seguente immagine Ubuntu:
- Ubuntu con containerd (
ubuntu_containerd): l'immagineubuntu_containerdutilizza containerd come runtime del container. Per saperne di più, consulta Immagini dei nodi containerd.
Windows Server
Quando crei un cluster utilizzando i node pool Windows Server, puoi utilizzare un'immagine nodo Windows Server Long-Term Servicing Channel (LTSC). Questa immagine del nodo Windows è un'immagine Windows Server Datacenter Core. Un singolo cluster può avere più node pool Windows Server che utilizzano versioni diverse di Windows Server, ma ogni singolo pool di nodi può utilizzare una sola versione di Windows Server. Per saperne di più, vedi Scegliere l'immagine del nodo Windows.
Puoi utilizzare la seguente immagine Windows Server:
- Windows Server LTSC con containerd (
windows_ltsc_containerd): l'immaginewindows_ltsc_containerdutilizza containerd come runtime del container. Al momento, questo tipo di immagine viene mappato a due immagini nodo: Windows Server 2022 e Windows Server 2019. Puoi creare pool di nodi Windows LTSC2022 tramite il comando gcloud CLI con il flagwindows-os-version.
Per saperne di più sulla creazione di node pool Windows Server 2022, consulta Crea node pool Windows.
Per saperne di più sulle immagini dei nodi containerd, consulta Immagini dei nodi containerd.
Per informazioni sul progetto e sulla famiglia di immagini, consulta Supporto delle funzionalità in base al sistema operativo.
Confronto tra le immagini dei nodi Linux
Le sezioni seguenti confrontano gli aspetti operativi delle immagini dei nodi Container-Optimized OS e Ubuntu, tra cui:
- Gestione dei pacchetti software
- Inizializzazione del sistema
- Raccolta di log
- Layout del file system
- Supporto dei driver di archiviazione
Gestore di pacchetti software
Le immagini dei nodi cos e cos_containerd utilizzano un file system root minimale con
supporto integrato per il runtime container Docker (containerd), che funge anche
da gestore di pacchetti software per l'installazione di software sull'host. L'immagine
Ubuntu utilizza il gestore di pacchetti
APT.
Gestione del software su Container-Optimized OS
L'immagine Container-Optimized OS non fornisce software di gestione dei pacchetti
come apt-get. Non puoi installare software arbitrario sui nodi utilizzando
meccanismi convenzionali. Crea invece un'immagine container che contenga il software di cui hai bisogno.
Nei cluster Standard solo a scopo di debug,
Container-Optimized OS include
CoreOS Toolbox per l'installazione
e l'esecuzione di strumenti di debug comuni come ping, psmisc o pstree.
Per saperne di più sul debug dei nodi Container-Optimized OS, consulta le
guide pratiche di Container-Optimized OS.
Gestione del software su Ubuntu
L'immagine Ubuntu utilizza il gestore di pacchetti APT. Puoi utilizzare il comando apt-get
per installare i pacchetti su queste immagini. Ad esempio, per installare i pacchetti ceph:
sudo apt-get update
sudo apt-get install ceph
Inizializzazione del sistema
Sia l'immagine del nodo Container-Optimized OS che quella di Ubuntu utilizzano systemd per gestire
le risorse e i servizi di sistema durante il processo di inizializzazione del sistema.
Entrambe le immagini dei nodi utilizzano
file di servizio systemd
per definire services sul nodo e
systemd.targets
per raggruppare le destinazioni di avvio tramite le dipendenze.
Raccolta di log
Le immagini dei nodi Container-Optimized OS e Ubuntu utilizzano systemd-journald
per la raccolta dei log a livello di sistema.
Visualizzazione dei log su Container-Optimized OS e Ubuntu
Per visualizzare i log su un nodo con l'immagine del nodo Container-Optimized OS o Ubuntu, devi utilizzare il comando journalctl. Ad esempio, per visualizzare i log del daemon containerd:
sudo journalctl -u containerd
Per visualizzare i log di kubelet:
sudo journalctl -u kubelet
Layout del file system
L'immagine del nodo Ubuntu utilizza il layout standard del file system Linux.
Il layout del file system dell'immagine del nodo Container-Optimized OS è ottimizzato per migliorare la sicurezza del nodo. Lo spazio sul disco di avvio è suddiviso in tre tipi di partizioni:
- Partizione root, montata come di sola lettura
- Partizioni stateful, che sono scrivibili e stateful
- Partizioni stateless, che sono scrivibili ma il cui contenuto non viene mantenuto dopo i riavvii
Quando utilizzi Container-Optimized OS, tieni presente il partizionamento se esegui servizi personalizzati che hanno determinate aspettative sul layout del file system al di fuori dei container.
Utilizzo del file system di Container-Optimized OS
Di seguito è riportato un elenco di percorsi nel file di immagine del nodo Container-Optimized OS, insieme alle relative proprietà e all'utilizzo consigliato:
| Percorso | Proprietà | Finalità |
|---|---|---|
| / |
|
Il file system principale è montato in modalità di sola lettura per mantenere l'integrità. Il kernel verifica l'integrità del file system root durante l'avvio e si rifiuta di avviarsi in caso di errori. |
| /home /var |
|
Questi percorsi sono destinati alla memorizzazione di dati che persistono per la durata del disco di avvio. Sono montati da /mnt/stateful_partition. |
| /var/lib/google /var/lib/docker /var/lib/toolbox |
|
Questi percorsi sono directory di lavoro per i pacchetti Compute Engine (ad esempio, il servizio di gestione degli account), Docker e Toolbox rispettivamente. |
| /var/lib/cloud |
|
Questo percorso è la directory di lavoro del pacchetto cloud-init. |
| /etc |
|
In genere contiene la configurazione (ad esempio,
i servizi systemd definiti tramite cloud-init).
È consigliabile acquisire lo stato desiderato delle istanze in
cloud-init, poiché cloud-init viene applicato quando un'istanza viene
creata di recente e quando viene riavviata. |
| /tmp |
|
Viene in genere utilizzato come spazio temporaneo e non deve essere utilizzato per archiviare dati permanenti. |
| /mnt/disks |
|
Puoi montare dischi permanenti nelle directory in /mnt/disks. |
Supporto dei driver di archiviazione
Ogni immagine del nodo differisce per i tipi di plug-in di archiviazione supportati. I seguenti termini si applicano quando si descrive il supporto di un'immagine del nodo per un particolare driver di archiviazione:
- Sì - Completamente testato/supportato: questo plug-in di archiviazione è completamente supportato e testato con l'immagine del nodo specificata.
- Sì - Test limitati: questo plug-in di archiviazione funziona con l'immagine del nodo specificata, ma è stato testato solo in modo limitato. Potresti riscontrare un comportamento imprevisto. Per Container-Optimized OS, questi plug-in alla fine verranno testati e supportati completamente.
- Non supportato: questo plug-in di archiviazione non è stato testato o utilizzato con l'immagine del nodo specificata e GKE non può fornire alcuna garanzia di funzionalità. Non sono previsti test per questo plug-in di archiviazione.
- No: questo plug-in di archiviazione non funziona con l'immagine del nodo specificata a causa di una limitazione intrinseca del sistema operativo del nodo o di Google Cloud.
La seguente matrice descrive in che modo ogni immagine nodo GKE supporta alcuni plug-in di archiviazione comuni.
| Tipo di volume | Funziona su Container-Optimized OS (cos)? |
Funziona su Ubuntu? |
|---|---|---|
| Disco permanente (EXT4 o XFS) di Compute Engine |
Sì - Completamente testato/supportato (XFS è supportato solo in cos-85 e versioni successive). Consulta le note di rilascio di GKE. | Sì - Completamente testato/supportato |
| NFSv3 | Sì - Completamente testato/supportato | Sì - Completamente testato/supportato |
| NFSv4 | Sì - Completamente testato/supportato | Sì - Completamente testato/supportato |
| CephFS | No | Sì - Test limitati (il driver non è installato per impostazione predefinita. Devi installare il client ceph, preferibilmente tramite DaemonSet.) |
| Cenerina | No | No |
| Fibre Channel | No | No |
| Flocker | Non supportato | Non supportato |
| iSCSI | No | No |
| RBD | No | No |
Sincronizzazione dell'ora
Sia le immagini dei nodi Container-Optimized OS che Ubuntu utilizzano un server NTP (Network Time Protocol) interno come origine principale dell'ora. Questo server NTP interno è spalmato in modo identico a Google Public NTP.
Se il server NTP interno non è disponibile, sia Container-Optimized OS sia le immagini dei nodi Ubuntu utilizzano l'orologio in tempo reale (RTC), ovvero l'orologio hardware della macchina host, come fonte di backup dell'ora.
Generazione di numeri casuali
Nei nodi Container-Optimized OS e Ubuntu, i pod hanno accesso ai
file /dev/random e /dev/urandom.
Questi file forniscono numeri casuali forniti da
Virtio RNG
da un pool di entropia generato dall'istanza Compute Engine.
Modifiche alle VM dei nodi
Le modifiche al disco di avvio di una VM del nodo non vengono mantenute nelle ricreazioni di nodi. I nodi vengono ricreati durante l'upgrade manuale, l'upgrade automatico, la riparazione automatica e la scalabilità automatica. Inoltre, i nodi vengono ricreati quando abiliti una funzionalità che richiede la ricreazione dei nodi, come GKE Sandbox, visibilità intranodo e nodi schermati.
Per mantenere le modifiche durante la ricreazione di nodi, utilizza un DaemonSet.
Non è consigliabile gestire software critici forniti da un'immagine del nodo, ad esempio il kernel o il runtime del container. Le immagini dei nodi vengono testate a fondo e la modifica del software critico fornito nell'immagine del nodo lo porta in uno stato sconosciuto e non testabile. I nodi GKE Autopilot non consentono la modifica del software del nodo.
Mappare le versioni delle immagini dei nodi Container-Optimized OS alle versioni delle patch GKE
GKE pubblica un mapping JSON delle versioni patch di GKE alle versioni delle immagini dei nodi Container-Optimized OS:
Puoi utilizzare questo mapping per eseguire l'upgrade a una versione specifica di GKE per ottenere una versione specifica dell'immagine. Ad esempio, se il tuo cluster ha bisogno di una determinata funzionalità o correzione di una versione dell'immagine, puoi trovare il mapping e aggiornare il cluster a una versione specifica di GKE per ottenere la versione dell'immagine Container-Optimized OS con le modifiche. Per informazioni dettagliate sulle release delle immagini Container-Optimized OS, consulta le note di rilascio di Container-Optimized OS.
Questo elenco viene aggiornato settimanalmente, circa. Per visualizzare la data di aggiornamento delle informazioni, consulta il campo creation_time nel file JSON.
Note di rilascio delle immagini dei nodi
Container-Optimized OS
Google fornisce una documentazione completa per Container-Optimized OS:
Ubuntu
Periodicamente, Google aggiorna le immagini Ubuntu disponibili per l'utilizzo sui nodi del cluster. Consulta le note di rilascio di GKE per informazioni su questi aggiornamenti, incluso un link a un manifest che elenca i pacchetti installati per impostazione predefinita.
Progetti di origine delle immagini dei nodi
Le immagini dei nodi disponibili per i cluster GKE sono contenute nei seguenti progetti di origine:
- Immagini Container-Optimized OS:
gke-node-images - Immagini Ubuntu:
ubuntu-os-gke-cloud - Immagini Windows Server:
gke-windows-node-images
Oltre ai progetti di origine elencati sopra, GKE utilizza anche i seguenti progetti di origine per l'utilizzo esclusivo da parte del team GKE:
ubuntu-os-gke-cloud-private(riservato all'utilizzo esclusivo del team GKE)ubuntu-os-gke-cloud-devel(riservato all'utilizzo esclusivo del team GKE)
Potresti dover conoscere i nomi dei progetti di origine durante la configurazione di cluster ad alta sicurezza. I progetti di origine elencati sono soggetti a modifiche.