Se si desidera eseguire Kubernetes sui dispositivi perimetrali e si nota che le soluzioni gestite non soddisfano i requisiti, è possibile considerare bare metal come opzione. Questo documento consente di trovare l'opzione migliore disponibile per il caso d'uso durante la configurazione dei cluster Kubernetes sui dispositivi perimetrali.
Nota
Questo articolo non rappresenta un confronto esaustivo; presenta invece i possibili percorsi per prendere decisioni basate sui principali qualificatori tra le opzioni comuni.
Strategia decisionale per Kubernetes bare metal su dispositivi perimetrali
Fare riferimento alla seguente strategia quando si decide tra le opzioni presentate di seguito per Kubernetes bare metal su dispositivi perimetrali.
Scaricare un file Visio di questo grafico.
MicroK8s: conforme a Kubernetes "Low Ops" di Canonical
K3s: distribuzione Kubernetes certificata creata per IoT ed edge computing
kubeadm: strumento Kubernetes per la creazione di cluster Kubernetes di base, valido per il calcolo standard (Linux/Windows)
Nota
Low Ops si riferisce al costo ridotto delle operazioni quando alcune attività operative vengono astratte o rese più semplici, ad esempio gli aggiornamenti automatici o gli aggiornamenti semplificati.
MicroK8s di Canonical
MicroK8s viene distribuito come singolo pacchetto snap, che può essere facilmente installato nei computer Linux con supporto snap. Sono disponibili installazioni alternative per Windows, macOS e raspberry PI/ARM. Quando è installato, MicroK8s crea un cluster a nodo singolo, che può essere gestito con gli strumenti microK8s. Viene incluso in un pacchetto con kubectl e possono essere abilitati alcuni componenti aggiuntivi (ad esempio helm, dns, ingress, metallb e altro ancora). Sono supportati anche scenari multinodo, nodi Windows e scenari a disponibilità elevata.
Considerazioni:
Esistono diversi requisiti di risorse a seconda della posizione in cui si vuole eseguire MicroK8s. Fare riferimento alla documentazione del prodotto per i requisiti minimi delle risorse. Ad esempio:
Ubuntu: 4 GB di RAM, spazio su disco da 20 GB
Windows: 4 GB di RAM, spazio su disco da 40 GB
I carichi di lavoro di Windows sono supportati solo per i cluster MicroK8s con Calico CNI.
Ogni nodo in un cluster multinodo MicroK8s richiede il funzionamento del proprio ambiente, indipendentemente dal fatto che si tratti di una macchina virtuale o di un contenitore separato in un singolo computer o in un computer diverso nella stessa rete.
Possono verificarsi dei problemi durante l'esecuzione di MicroK8 su hardware ARM. Fare riferimento alla documentazione per i possibili rimedi.
K3s di Rancher
K3s è una distribuzione leggera di Kubernetes. K3s viene distribuito come singolo file binario e viene fornito con strumenti incorporati come kubectl e ctr, simili a MicroK8s.
Considerazioni:
Il file binario è minore di 100 MB, ma esistono ancora requisiti minimi per le risorse a seconda dello scenario. Fare riferimento alla documentazione per i requisiti minimi delle risorse.
SQLite3 è il sistema di archiviazione predefinito, anche se sono supportate anche altre opzioni.
I nodi Windows non sono attualmente supportati per K3s.
La disponibilità elevata può essere ottenuta con un database esterno o un database incorporato. K3s ha aggiunto il supporto completo per etcd incorporato a partire dalla versione 1.19.5+k3s1.
kubeadm
Kubeadm è un'installazione semplice di Kubernetes fin dall'inizio.
Considerazioni:
Richiede 2 GiB (gibibytes) o più ram per computer.
Richiede almeno 2 CPU nel nodo del piano di controllo.
Il nodo del piano di controllo deve essere un computer che esegue un sistema operativo Linux compatibile con deb/rpm.
I criteri di supporto della versione di Kubernetes e per le differenze tra versioni si applicano a kubeadm e a Kubernetes a livello globale. Verificare che i criteri siano disponibili per informazioni sulle versioni di Kubernetes e kubeadm supportate.
Gestione/automazione
Per quanto riguarda automazione e gestione del provisioning di cluster bare metal, sono disponibili due opzioni da esplorare: Ansible e Metal3.
Ansible offre un modo semplice per gestire le risorse remote, ed è quindi uno dei candidati principali per gestire e aggiungere nodi remoti a un cluster Kubernetes. Tutto quello che serve è il file binario Ansible, in esecuzione in un computer Linux e SSH nei computer remoti. Questo metodo fornisce un meccanismo flessibile per eseguire script arbitrari nei computer di destinazione, il che significa che è possibile usare Ansible con uno degli strumenti indicati in precedenza.
Metal3 adotta un approccio diverso per risolvere questo problema usando concetti simili all'API del cluster. È necessario creare un'istanza di un cluster temporaneo per effettuare il provisioning e gestire cluster bare metal usando oggetti Kubernetes nativi. Al momento della scrittura, Metal3 usa kubeadm e, pertanto, non supporta distribuzioni Kubernetes leggere.
Per la gestione oltre al provisioning dei cluster, è consigliabile conoscere i cluster abilitati per Azure Arc per gestire i cluster in Azure.
Passaggi successivi
Per altre informazioni, vedere gli articoli seguenti: