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 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 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 di Container-Optimized OS sono supportate da un team di Google che può applicare rapidamente patch alle immagini per la sicurezza e eseguire l'iterazione sulle funzionalità. Le immagini Container-Optimized OS offrono un supporto, una sicurezza e una stabilità migliori rispetto ad altre immagini.
Per informazioni sul progetto e sulla famiglia di immagini, consulta Progetti di origine immagine del nodo.
Varianti di Container-Optimized OS
Container-Optimized OS offre due runtime dei container. Le immagini sono uguali, tranne per la scelta del runtime del contenitore.
- Sistema operativo ottimizzato per i container con containerd (
cos_containerd
): l'immaginecos_containerd
utilizza containerd come runtime del container direttamente integrato con Kubernetes. I cluster GKE Autopilot useranno sempre questa immagine. Per saperne di più, consulta Immagini dei nodi Containerd. - Container-Optimized OS con Docker (
cos
): l'immaginecos
utilizza il runtime del container Docker.
Ubuntu
Le immagini dei nodi Ubuntu sono state convalidate in base ai requisiti delle immagini dei nodi GKE. 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 uguali, tranne che per la scelta del runtime del contenitore.
Ubuntu con containerd (
ubuntu_containerd
): l'immagineubuntu_containerd
utilizza containerd come runtime del container. Per ulteriori informazioni, consulta Immagini dei nodi containerd.Ubuntu con Docker (
ubuntu
): l'immagineubuntu
utilizza Docker come runtime dei container.
Windows Server
Quando crei un cluster utilizzando i pool di nodi di Windows Server, puoi utilizzare un'immagine del nodo del Canale semestrale (SAC) di Windows Server o del Canale LTSC (Long-Term Servicing Channel) di Windows Server. 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 ulteriori informazioni, consulta Scegliere l'immagine del 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 del 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 dei 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 LTSC 2022 tramite il comando CLI con il flagwindows-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'immaginewindows_ltsc
utilizza Docker come runtime del container. - Windows Server SAC con Docker (
windows_sac
): l'immaginewindows_sac
utilizza Docker come runtime del container.
- Windows Server LTSC con Docker (
Per informazioni sul progetto e sulla famiglia di immagini, consulta Supporto delle funzionalità in base al 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
Gestore dei pacchetti software
Le immagini dei nodi cos
e cos_containerd
utilizzano un file system di root minimo con il supporto integrato per il runtime del container Docker (containerd), che funge anche da gestore dei pacchetti software per l'installazione del software sull'host. L'immagine Ubuntu utilizza il
gestore dei pacchetti APT.
Gestione del software su Container-Optimized OS
L'immagine di 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 contenente il software di cui hai bisogno.
Nei cluster standard solo a scopo di debug, Container-Optimized OS include CoreOS Toolbox per installare 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 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 Ubuntu che Container-Optimized OS utilizzano systemd
per gestire le risorse e i servizi di sistema durante la procedura di inizializzazione del sistema.
Entrambe le immagini del nodo utilizzano
file di servizio systemd
per definire services
sul nodo e
systemd.targets
per raggruppare i target di avvio tramite le 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 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 del 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 con stato integro, che sono scrivibili e con stato integro
- 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 sistema di file dell'immagine del nodo Container-Optimized OS, insieme alle relative proprietà e all'utilizzo consigliato:
Percorso | Proprietà | Finalità |
---|---|---|
/ |
|
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 |
|
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 |
|
Questi percorsi sono le directory di lavoro per i pacchetti Compute Engine (ad esempio il servizio Account Manager), Docker e Toolbox. |
/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 ).
È 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 |
|
In genere viene utilizzato come spazio temporaneo e non deve essere utilizzato per archiviare dati permanenti. |
/mnt/disks |
|
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. I seguenti termini si applicano quando si descrive il supporto di un'immagine del nodo per un determinato driver di archiviazione:
- Sì - Completamente testato/supportato: questo plug-in di archiviazione è completamente supportato e provato 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 Container-Optimized OS, 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 possibilità di testare 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 al sistema operativo del nodo o a 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ì - Testato/supportato completamente (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 . |
Cinder | No | No |
Fibre Channel | No | No |
Flocker | Non supportato | Non supportato |
iSCSI | No | No |
RBD | No | No |
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 attivi una funzionalità che richiede la ricreazione dei nodi, come GKE Sandbox, visibilità tra nodi e nodi protetti.
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 dei nodi Container-Optimized OS alle versioni delle patch GKE
GKE pubblica una mappatura JSON delle versioni patch di GKE alle versioni delle immagini dei nodi Container-Optimized OS:
Puoi utilizzare questa mappatura per eseguire l'upgrade a una versione specifica di GKE per ottenere una versione dell'immagine specifica. 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 ottimizzato per i container 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 circa ogni settimana. Per verificare l'aggiornamento delle 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 manifest che elenca i pacchetti installati per impostazione predefinita.
Problemi noti
Reimpostazione casuale della connessione sui nodi GKE che utilizzano Container-Optimized OS con il runtime Docker
Il nodo GKE che utilizza Container-Optimized OS con Docker (cos
) potrebbe subire reimpostazioni casuali della connessione TCP quando due pod sullo stesso nodo comunicano utilizzando un servizio Kubernetes ClusterIP.
Sono interessate le seguenti versioni di GKE:
- 1.20.5-gke.100 o versioni successive
Per risolvere il problema, utilizza una delle seguenti opzioni:
- Esegui la migrazione da Docker alle immagini dei nodi containerd.
- Abilita la visibilità tra nodi per il cluster.
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 di GKE:
ubuntu-os-gke-cloud-private
(riservato per l'utilizzo esclusivo 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 cluster estremamente sicuri. I progetti di origine elencati sono soggetti a modifiche.