Immagini dei nodi


In questa pagina vengono descritte le immagini dei nodi disponibili per i nodi di 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 in esecuzione su ogni nodo durante la creazione del cluster o del pool di nodi. 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 per le immagini dei nodi in base al sistema operativo 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. Immagini Container-Optimized OS sono supportate da un team di Google in grado di applicare patch rapidamente alle immagini per motivi di sicurezza eseguire l'iterazione delle caratteristiche. Le immagini Container-Optimized OS offrono il supporto, la sicurezza e la stabilità rispetto ad altre immagini.

Per informazioni sul progetto Immagine e sulla famiglia, vedi Progetti di origine dell'immagine del nodo.

Varianti di Container-Optimized OS

Container-Optimized OS offre due runtime dei container. Immagini sono le stesse, ad eccezione della scelta del runtime del container.

  • Container-Optimized OS con containerd (cos_containerd): il parametro L'immagine cos_containerd utilizza direttamente containerd come runtime del container integrati con Kubernetes. I cluster GKE Autopilot useranno sempre questa immagine. Per ulteriori informazioni, consulta Immagini dei nodi Containerd.
  • Container-Optimized OS con Docker (cos): l'immagine cos utilizza il runtime del container Docker.

Ubuntu

Le immagini dei nodi Ubuntu sono state convalidate rispetto al nodo di GKE requisiti delle immagini. Devi utilizzare le immagini dei nodi Ubuntu se i tuoi nodi richiedono il supporto per i pacchetti XFS, CephFS o Debian.

Per informazioni sul progetto e sulla famiglia di immagini, consulta Supporto delle funzionalità in base al sistema operativo.

Varianti di Ubuntu

Ubuntu offre due runtime dei container. Le immagini sono le stesse, rispetto alla scelta del runtime del container.

  • Ubuntu con containerd (ubuntu_containerd): l'immagine ubuntu_containerd utilizza containerd come runtime del container. Per ulteriori informazioni, consulta Immagini dei nodi Containerd.

  • Ubuntu con Docker (ubuntu): l'immagine ubuntu utilizza Docker come runtime dei container.

Windows Server

Quando crei un cluster utilizzando i pool di nodi di Windows Server puoi usare un canale semestrale (SAC) di Windows Server o Windows Server Immagine del nodo LTSC (Long-Term Servicing Channel). Tutte le immagini dei nodi Windows sono immagini Windows Server Datacenter Core. Un singolo cluster può avere più pool di nodi Windows Server che utilizzano versioni diverse di Windows Server, ma ogni singolo pool di nodi può utilizzare una sola versione di Windows Server. Per maggiori informazioni le informazioni, vedi Scegli l'immagine del tuo nodo Windows.

Con le immagini dei nodi Windows Server LTSC e SAC sono disponibili due runtime dei container: Docker e containerd. Le immagini sono uguali, tranne per la scelta del runtime del contenitore.

  • Immagini di runtime containerd (disponibili in GKE 1.21 e versioni successive):

    • Windows Server LTSC con containerd (windows_ltsc_containerd): l'immaginewindows_ltsc_containerd utilizza containerd come runtime del container. Attualmente, questo tipo di immagine mappa a due immagini di nodi: Windows Server 2022 e Windows Server 2019. Puoi creare pool di nodi Windows LTSC2022 tramite il comando dell'interfaccia a riga di comando con il flag windows-os-version.

      Per saperne di più sulla creazione di pool di nodi Windows Server 2022, consulta Creare pool di nodi Windows

      Per ulteriori informazioni sulle immagini dei nodi containerd, consulta Immagini dei nodi containerd.

    • SAC di Windows Server con containerd (windows_sac_containerd): l'immaginewindows_sac_containerd utilizza containerd come runtime del container.

      Per saperne di più, consulta Immagini dei nodi containerd.

  • Immagini di runtime Docker (disponibili in GKE 1.16 e versioni successive):

    • Windows Server LTSC con Docker (windows_ltsc): l'immagine windows_ltsc utilizza Docker come runtime del container.
    • Windows Server SAC con Docker (windows_sac): l'immagine windows_sac utilizza Docker come runtime del container.

Per informazioni sul progetto di immagine e sulla famiglia, vedi Supporto delle funzionalità per sistema operativo.

Confronto delle immagini dei nodi Linux

Le seguenti sezioni confrontano gli aspetti operativi delle immagini dei nodi Ubuntu e Container-Optimized OS, tra cui:

  • Gestione dei pacchetti software
  • Inizializzazione del sistema
  • Raccolta di log
  • Layout del file system
  • Supporto dei driver di archiviazione

Gestione pacchetti software

Le immagini dei nodi cos e cos_containerd utilizzano un file system radice minimo con supporto integrato per il runtime del container Docker (containerd), che funge anche da gestore di pacchetti software per installare software sull'host. L'immagine Ubuntu utilizza la classe Gestore di pacchetti APT.

Gestione del software su Container-Optimized OS

L'immagine del sistema operativo ottimizzato per i container 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 contiene il software necessario.

Nei cluster Standard solo a scopo di debug, Container-Optimized OS include CoreOS Toolbox per l'installazione ed eseguire strumenti di debug comuni come ping, psmisc o pstree. Per ulteriori informazioni sul debug dei nodi Container-Optimized OS, consulta le guide pratiche di Container-Optimized OS.

Gestire il 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 ceph di spedizione:

sudo apt-get update
sudo apt-get install ceph

Inizializzazione del sistema

Sia l'immagine dei nodi Container-Optimized OS sia l'immagine dei nodi Ubuntu utilizzano systemd per la gestione le risorse e i servizi di sistema durante il processo di inizializzazione del sistema.

Entrambe le immagini nodo utilizzano file di servizio di sistema per definire services sul nodo systemd.targets per raggruppare le destinazioni di avvio tramite dipendenze.

Raccolta di log

Le immagini dei nodi Container-Optimized OS e Ubuntu utilizzano systemd-journald per raccogliere i 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 Ubuntu Container-Optimized OS o: devono utilizzare journalctl . Ad esempio, per visualizzare i log dei 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 del file system Linux standard.

Il layout del file system dell'immagine del nodo Container-Optimized OS è ottimizzato per migliorare la sicurezza del nodo. Lo spazio del disco di avvio è suddiviso in tre tipi di partizioni:

  • Partizione principale, montata come di sola lettura
  • Partizioni stateful, scrivibili e stateful
  • Partizioni senza stato, che sono scrivibili, ma i cui contenuti non vengono mantenuti dopo i riavvii

Quando utilizzi Container-Optimized OS, tieni presente la partizione se esegui i tuoi servizi 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 immagine dei nodi Container-Optimized OS sistema, insieme alle loro proprietà e all'utilizzo consigliato:

Percorso Proprietà Finalità
/
  • sola lettura
  • eseguibile
Il file system principale viene montato in sola lettura per mantenere l'integrità. Il kernel verifica l'integrità del file system principale durante l'avvio e si rifiuta di avviarsi in caso di errori.
/home
/var
  • scrivibile
  • non eseguibile
  • stateful
Questi percorsi sono destinati alla memorizzazione di dati permanenti per tutta la durata del disco di avvio. Sono montati da /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • scrivibile
  • executable
  • stateful
Questi percorsi sono le directory di lavoro per i pacchetti Compute Engine (ad esempio il servizio Account Manager), Docker e Toolbox.
/var/lib/cloud
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
Questo percorso è la directory di lavoro del pacchetto cloud-init.
/etc
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
In genere contiene la configurazione (ad esempio, i servizi systemd definiti tramite cloud-init). È buona norma acquisire lo stato desiderato delle istanze in cloud-init, poiché cloud-init viene applicato quando viene creata una nuova istanza e quando un'istanza viene riavviata.
/tmp
  • scrivibile
  • non eseguibile
  • stateless
  • tmpfs
In genere viene utilizzato come spazio temporaneo e non deve essere usato per archiviare e permanenti.
/mnt/disks
  • accessibile in scrittura
  • executable
  • stateless
  • tmpfs
Puoi montare i dischi permanenti nelle directory sotto /mnt/disks.

Supporto dei driver di archiviazione

Ogni immagine del nodo è diversa per i tipi di plug-in di archiviazione supportati. La i seguenti termini si applicano quando si descrive il supporto di un'immagine nodo per un driver di archiviazione:

  • Sì - Completamente testato/supportato: questo plug-in di archiviazione è completamente supportato e viene 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 comportamenti imprevisti. Per il sistema operativo ottimizzato per i container, questi plug-in verranno eventualmente 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 è prevista la verifica di questo plug-in per lo spazio di archiviazione.
  • No: questo plug-in di archiviazione non funziona con lo spazio di archiviazione specificato. l'immagine del nodo a causa di una limitazione intrinseca del sistema operativo nodo o di Google Cloud.

La seguente matrice descrive in che modo ogni immagine del nodo GKE supporta alcuni plug-in di archiviazione comuni.

Tipo di volume Funziona su Container-Optimized OS (cos)? Funziona su Ubuntu?
Disco permanente
di Compute Engine (EXT4 o XFS)
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 testati/supportati
NFSv4 Sì - completamente testato/supportato Sì - Completamente testati/supportati
CephFS No Sì - Test limitati
(il driver non è installato per impostazione predefinita. Devi installare il client ceph, preferibilmente tramite DaemonSet.
Cinder No No
Canale in fibra ottica No No
Flocker Non supportato Non supportato
iSCSI No No
RBD No No

Modifiche alle VM del nodo

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 caratteristica che richiede la nuova creazione dei nodi, ad esempio GKE Sandbox, visibilità intranodi e nodi schermati.

Per mantenere le modifiche durante la ricreazione di nodi, utilizza un DaemonSet.

Non è consigliabile gestire il software critico fornito da un'immagine del nodo, ad esempio il kernel o il runtime del contenitore (containerd o docker). Le immagini del nodo vengono sottoposte a test approfonditi e la modifica del software critico fornito nell'immagine del nodo mette il nodo in uno stato sconosciuto e non verificabile. I nodi GKE Autopilot non consentono la modifica del software dei nodi.

Mappa le versioni delle immagini del nodo Container-Optimized OS alle versioni delle patch GKE

GKE pubblica una mappatura JSON delle versioni delle patch GKE alle versioni delle immagini dei nodi Container-Optimized OS:

Puoi usare questa mappatura per eseguire l'upgrade a una versione specifica di GKE per ottenere una specifica versione dell'immagine. Ad esempio, se il tuo cluster ha bisogno di una determinata funzionalità o correzione di una versione dell'immagine, puoi trovare la mappatura e eseguire l'upgrade del cluster a una versione specifica di GKE per ottenere la versione dell'immagine del sistema operativo ottimizzata per i container con le modifiche. Per maggiori dettagli su le release delle immagini di Container-Optimized OS, consulta Release Container-Optimized OS note.

Questo elenco viene aggiornato settimanalmente all'incirca. Per verificare l'aggiornamento del informazioni, fai riferimento al campo creation_time nel file JSON.

Note di rilascio delle immagini dei nodi

Container-Optimized OS

Google fornisce documentazione completa per Container-Optimized OS:

Ubuntu

Periodicamente, Google aggiorna le immagini Ubuntu disponibili per l'utilizzo sui nodi del tuo cluster. Consulta le note di rilascio di GKE per informazioni su questi aggiornamenti, incluso un link a un file manifest che elenca e pacchetti installati per impostazione predefinita.

Problemi noti

La connessione casuale viene reimpostata sui nodi GKE utilizzando Container-Optimized OS con il runtime Docker

Il nodo GKE che utilizza Container-Optimized OS con Docker (cos) può una connessione TCP casuale si reimposta quando due pod sullo stesso nodo comunicano usando un servizio ClusterIP di Kubernetes.

Sono interessate le seguenti versioni di GKE:

  • 1.20.5-gke.100 o versioni successive

Per risolvere il problema, utilizza una delle seguenti opzioni:

Progetti di origine delle immagini dei nodi

Le immagini dei nodi disponibili per i cluster GKE sono contenute nei seguenti progetti di origine:

  • Immagini di 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 (prenotato per l'utilizzo esclusivo da parte del team GKE)
  • ubuntu-os-gke-cloud-devel (riservato per l'utilizzo esclusivo del team GKE)

Potresti dover conoscere i nomi dei progetti di origine durante la configurazione di una sicurezza elevata cluster. I progetti di origine elencati sono soggetti a modifiche.

Passaggi successivi