Guida per creare un cluster Kubernetes su Ubuntu per professionisti

5 feb 2024 6 min di lettura
Guida  per creare un cluster Kubernetes su Ubuntu per professionisti
Indice dei contenuti

Introduzione

Nel mondo in rapida evoluzione dello sviluppo software, i professionisti DevOps sono costantemente alla ricerca di modi efficienti per gestire e distribuire le applicazioni. Kubernetes, una piattaforma open source per automatizzare la distribuzione, la scalabilità e le operazioni delle applicazioni containerizzate, è emersa come soluzione a queste sfide. Questa guida fornisce una procedura dettagliata completa per la configurazione di un cluster Kubernetes su Ubuntu, su misura per i professionisti DevOps che mirano a semplificare i flussi di lavoro e a migliorare la scalabilità e l'affidabilità della propria infrastruttura.

Cos'è il cluster Kubernetes?

Un cluster Kubernetes è un insieme di macchine nodo per l'esecuzione di applicazioni containerizzate. Questo cluster è costituito da almeno un nodo master e più nodi di lavoro. Il nodo master gestisce lo stato del cluster, pianificando le applicazioni, mantenendo lo stato desiderato, ridimensionando le applicazioni e implementando nuovi aggiornamenti. I nodi di lavoro ospitano i pod, ovvero contenitori che eseguono i carichi di lavoro dell'applicazione. Kubernetes astrae l'infrastruttura sottostante, rendendo più semplice per gli sviluppatori distribuire, scalare e gestire le proprie applicazioni senza dover considerare le specifiche dell'hardware host. Automatizza molte attività IT tradizionali, facilitando un processo di distribuzione e gestione più efficiente e affidabile per le applicazioni containerizzate.

Prerequisiti

Prima di immergerti nel processo di configurazione, assicurati di avere quanto segue:

  • Server Ubuntu: almeno due macchine (una come nodo master e le altre come nodi di lavoro) che eseguono Ubuntu 20.04 o versioni successive. Ciascuno dovrebbe avere un minimo di 2 CPU e 2 GB di RAM, anche se per gli ambienti di produzione è consigliato un numero maggiore.
  • Accesso SSH: assicurati di avere accesso SSH a tutti i nodi.
  • Connettività Internet: tutti i nodi devono disporre di una connessione Internet affidabile per scaricare i pacchetti necessari.
  • Docker: Docker deve essere installato su tutti i nodi poiché Kubernetes gestirà i contenitori Docker.
    Utente con privilegi sudo: assicurati di avere un utente con privilegi sudo su tutti i nodi.

Passaggio 1: preparare i server Ubuntu

Una volta che tutti i tuoi sistemi Ubuntu sono attivi e funzionanti, prepara i tuoi sistemi a far parte di un cluster Kubernetes. Ciò richiedeva l'installazione del demone Docker e la sua configurazione:

1.1. Aggiorna il tuo sistema

Inizia aggiornando i pacchetti di sistema alle versioni più recenti:

sudo apt-get update
sudo apt-get upgrade -y

1.2. Installa Docker su tutti i nodi

Installa Docker, il runtime del contenitore, su tutti i nodi:

sudo apt-get install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker

1.3. Configura il demone Docker

Kubernetes richiede una configurazione specifica per Docker. Crea o modifica il file di configurazione del demone Docker:

sudo mkdir -p /etc/docker
echo '{"exec-opts": ["native.cgroupdriver=systemd"]}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker

Passaggio 2: installazione dei componenti Kubernetes

L'installazione dei componenti Kubernetes implica la configurazione di strumenti essenziali come kubeadm, kubelet e kubectl. Innanzitutto, configura il tuo strumento di gestione dei pacchetti per accedere ai pacchetti Kubernetes. Quindi, installa questi componenti utilizzando il gestore pacchetti. Assicurati che il tuo sistema soddisfi i prerequisiti, come Docker o un altro runtime del contenitore, prima di iniziare il processo di installazione.

2.1. Aggiungi il repository Kubernetes

Su tutti i nodi, aggiungi la chiave di firma e il repository Kubernetes:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

2.2. Installa Kubernetes

Ora installa i componenti Kubernetes come kubelet, kubeadm, kubectl ecc.:

sudo apt-get update
sudo apt-get install kubelet kubeadm kubectl -y
sudo apt-mark hold kubelet kubeadm kubectl

Passaggio 3: inizializzazione del cluster Kubernetes

Sul nodo master inizializza il cluster con kubeadm :

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

Dopo l'inizializzazione, segui le istruzioni per iniziare a utilizzare il tuo cluster. Ciò in genere comporta l'esecuzione di comandi per utilizzare il comando kubectl come utente non root e l'applicazione di un plug-in CNI (Container Network Interface).

Passaggio 4: unione dei nodi di lavoro al cluster

Su ciascun nodo di lavoro, utilizza il comando kubeadm join fornito alla fine dell'output di inizializzazione del nodo master. Questo comando sarà simile a questo:

sudo kubeadm join :6443 --token  --discovery-token-ca-cert-hash sha256:

Passaggio 5: distribuzione di una rete di pod

La distribuzione di una rete pod all'interno del tuo cluster Kubernetes è fondamentale per abilitare la comunicazione tra pod tra diversi nodi. Calico, un provider di networking e policy di rete ampiamente utilizzato, offre una soluzione efficiente per questo. Per distribuire Calico, devi semplicemente eseguire un comando che applica il suo file manifest direttamente dalla documentazione ufficiale di Calico.

Apri il tuo terminale e inserisci il seguente comando:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Questo comando indica a Kubernetes di scaricare e applicare il manifest Calico, configurando la rete di pod e garantendo che i tuoi pod possano comunicare senza problemi tra loro, mantenendo la robustezza e l'efficienza delle capacità di rete del tuo cluster.

Passaggio 6: testare la configurazione

Dopo aver configurato il tuo cluster Kubernetes e aver distribuito una rete pod, è fondamentale verificare che tutto funzioni correttamente. Questo passaggio prevede il test del cluster per garantire che sia pronto per la distribuzione delle applicazioni. Ecco come puoi condurre un test di base della configurazione del tuo cluster Kubernetes su Ubuntu:

6.1. Verifica dello stato dei nodi

Innanzitutto, controlla lo stato di tutti i nodi per assicurarti che siano pronti. Eseguire il comando seguente dal nodo master:

kubectl get nodes

Questo comando dovrebbe elencare tutti i nodi nel tuo cluster, inclusi i nodi master e di lavoro, mostrando lo stato "Pronto" per ciascuno. Ciò indica che i tuoi nodi fanno parte del cluster e sono pronti per eseguire carichi di lavoro Kubernetes.

6.2. Distribuzione di un'applicazione di test

Per verificare se il tuo cluster può eseguire applicazioni, distribuisci un semplice pod Nginx:

Crea una distribuzione : distribuisci una semplice distribuzione Nginx per testare la pianificazione e l'esecuzione dei pod:

kubectl create deployment nginx --image=nginx

Esporre la distribuzione : esporre la distribuzione Nginx per accedervi dall'esterno del cluster:

kubectl expose deployment nginx --port=80 --type=NodePort

Controllo della distribuzione e del servizio : verificare che la distribuzione sia in esecuzione e controllare il servizio per annotare la porta esposta sui nodi del cluster:

kubectl get deployments
kubectl get pods
kubectl get svc

6.3. Accesso all'applicazione di prova

Dopo aver esposto la distribuzione Nginx, puoi accedervi da qualsiasi nodo nel cluster. Il comando kubectl get svc elencherà i servizi e i loro dettagli, inclusa la porta mappata al servizio Nginx (cerca il valore NodePort). Per accedere alla home page di Nginx, aprire un browser Web e accedere a http://<NODE_IP>:<NODE_PORT> , sostituendo <NODE_IP> con l'indirizzo IP di qualsiasi nodo nel cluster e <NODE_PORT> con il numero di porta mostrato per Servizio Nginx.

6.4. Verifica della comunicazione tra cluster e pod

Garantire che i pod possano comunicare tra loro e con il mondo esterno. Puoi eseguire un test creando un pod temporaneo per eseguire un comando curl sul servizio Nginx:

kubectl run curl --image=radial/busyboxplus:curl -i --tty --rm -- sh

Una volta all'interno della shell del pod temporaneo, utilizza il seguente comando per eseguire il curling del servizio Nginx:

curl http://nginx

Questo comando dovrebbe restituire il contenuto HTML della pagina di benvenuto di Nginx, indicando l'avvenuta comunicazione tra pod e la configurazione dell'accesso esterno.

6.5. Pulire

Dopo il test, ripulisci le risorse per mantenere il tuo cluster in ordine:

Elimina il servizio: rimuovi il servizio Nginx:

kubectl delete deployment nginx

Elimina la distribuzione: rimuovi la distribuzione Nginx:

kubectl delete svc nginx

Seguendo questo passaggio, non solo hai verificato che il tuo cluster Kubernetes su Ubuntu sia configurato e operativo correttamente, ma hai anche acquisito esperienza pratica nella distribuzione e nella gestione delle applicazioni.

Conclusione

Congratulazioni! Hai configurato con successo un cluster Kubernetes su Ubuntu. Questa configurazione fornisce una solida base per la distribuzione e la gestione delle applicazioni containerizzate. Ricorda, Kubernetes è altamente personalizzabile e c'è molto altro da esplorare oltre a questa configurazione di base. Approfondisci la documentazione di Kubernetes, sperimenta diverse configurazioni ed esplora funzionalità avanzate per sfruttare appieno Kubernetes nei tuoi flussi di lavoro DevOps.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.