GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Kubernetes (k8s) su Ubuntu 20.04 LTS Server

Kubernetes (k8s) è uno strumento di orchestrazione di container gratuito e open source. Viene utilizzato per la distribuzione, il ridimensionamento e la gestione di applicazioni basate su contenitori. In questo articolo dimostreremo come installare Kubernetes Cluster su Ubuntu 20.04 LTS Server (Focal Fossa) usando kubeadm . Nella mia configurazione di laboratorio ho usato tre macchine server Ubuntu 20.04 LTS. Di seguito sono riportati i requisiti di sistema su ciascun sistema Ubuntu.

  • Minimo di 2 GB di RAM
  • 2 Core (2 vCPU)
  • 15 GB di spazio libero su /var
  • Utente privilegiato con diritti sudo
  • Connessione Internet stabile

Di seguito sono riportati i dettagli della configurazione del mio laboratorio:

  • Macchina 1 (Ubuntu 20.04 LTS Server) – K8s-master – 192.168.1.40
  • Macchina 2 (Ubuntu 20.04 LTS Server) – K8s-node-0 – 192.168.1.41
  • Macchina 3 (Ubuntu 20.04 LTS Server) – K8s-node-1 – 192.168.1.42

Ora passiamo ai passaggi di installazione di Kubernetes

Fase 1) Imposta il nome host e aggiungi le voci nel file /etc/hosts

Utilizzare il comando hostnamectl per impostare il nome host su ciascun nodo, l'esempio è mostrato di seguito:

$ sudo hostnamectl set-hostname "k8s-master"     // Esegui questo comando sul nodo principale$ sudo hostnamectl set-hostname "k8s-node-0"     // Esegui questo comando su node-0$ sudo hostnamectl set-hostname "k8s-node-1"     // Esegui questo comando sul nodo-1

Aggiungi le seguenti voci nei file /etc/hosts su ciascun nodo,

192.168.1.40    k8s-master192.168.1.41    k8s-node-0192.168.1.42    k8s-node-1

Passaggio 2) Installa Docker (Container Runtime) su tutti e 3 i nodi

Accedi a ciascun nodo ed esegui i seguenti comandi per installare la finestra mobile,

$ sudo apt update$ sudo apt install -y docker.io

Ora avvia e abilita il servizio docker su ogni nodo usando il comando sotto systemctl,

$ sudo systemctl enable docker.service --now

Esegui il comando seguente per verificare lo stato del servizio Docker e la sua versione,

$ systemctl status docker$ docker --version

Passaggio 3) Disabilita lo scambio e abilita l'inoltro IP su tutti i nodi

Per disabilitare lo scambio, modificare il file /etc/fstab e commentare la riga che include l'immissione della partizione di scambio o del file di scambio.

$ sudo vi /etc/fstab

Salva ed esci dal file

Esegui il comando swapoff per disabilitare lo scambio al volo

$ sudo swapoff -a

Per abilitare l'inoltro IP in modo permanente, modificare il file "/etc/sysctl.conf" e cercare la riga "net.ipv4.ip_forward=1 ” e togli il commento. Dopo aver apportato le modifiche al file, eseguire il comando seguente

$ sudo sysctl -pnet.ipv4.ip_forward =1$

Passaggio 4) Installa Kubectl, kubelet e kubeadm su tutti i nodi

Esegui i seguenti comandi su tutti e 3 i nodi per installare l'utilità kubectl , kubelet e kubeadm

$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl

Nota : Al momento della stesura di questo articolo, il repository Kubernetes di Ubuntu 16.04 (Xenial Xerus) era disponibile ma in futuro, quando il repository kubernetes sarà disponibile per Ubuntu 20.04, sostituire xenial con la parola focale nel comando 'apt-add-repository' sopra.

Passaggio 4) Inizializza Kubernetes Cluster usando kubeadm (dal nodo master)

Accedi al tuo nodo principale (k8s-master) ed esegui sotto il comando "kubeadm init" per inizializzare il cluster Kubernetes,

$ sudo kubeadm init

Una volta che il cluster è stato inizializzato correttamente, otterremo il seguente output

Per iniziare a utilizzare il cluster come utente normale, eseguiamo i seguenti comandi, i comandi sono già presenti in output basta copiarli e incollarli.

[e-mail protetta]:~$  mkdir -p $HOME/.kube[e-mail protetta]:~$  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[e-mail protetta]:~ $  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Ora unisci i nodi di lavoro (k8s-node-0/1) al cluster, il comando per unirti al cluster è già presente nell'output. Copia il comando "kubeadm join" e incollalo su entrambi i nodi (nodi di lavoro).

Accedi a Node-0 ed esegui il seguente comando,

[email protetta]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b989d2>9 

Accedi al Nodo-1 ed esegui il seguente comando per unirti al cluster,

[email protetta]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b989d2>9 

Dal nodo master esegui il comando "kubectl get nodes" per verificare lo stato dei nodi

 [E-mail Protected]:~ $ kubectl Ottieni ruoli di stato nodesName Age versionek8s-master notready master 27m v1.18.3k8s-node-0 notReady  8m3s v1.18.3k8s-node-1 notReady  7m19s v1. 18.3[email protetta]:~$

Come possiamo vedere, sia i nodi di lavoro che il nodo master sono entrati a far parte del cluster, ma lo stato di ogni nodo è "Non pronto ”. Per rendere lo stato "Pronto "Dobbiamo implementare componenti aggiuntivi di rete Pod basati su Container Network Interface (CNI) come calico , router kube e weave-net . Come suggerisce il nome, i componenti aggiuntivi della rete pod consentono ai pod di comunicare tra loro.

Passaggio 5) Distribuisci il componente aggiuntivo Calico Pod Network (nodo principale)

Dal nodo master, esegui il comando seguente per installare il componente aggiuntivo di rete Calico pod,

[email protetta]:~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Una volta che è stato distribuito correttamente, lo stato dei nodi sarà pronto, eseguiamo nuovamente il comando kubectl per verificare lo stato dei nodi

[email protected]:~$ kubectl get nodesNAME         STATUS   ROLES    AGE   VERSIONk8s-master   Pronto    master   39m   v1.18.3k8s-node-0   Pronto       19m   v1.18.3k8s-node-1         

Esegui il comando seguente per verificare lo stato dei pod da tutti gli spazi dei nomi

Perfetto, sopra conferma che tutti i pod funzionano e sono in buono stato. Proviamo a distribuire pod, servizi e distribuzioni per vedere se il nostro cluster Kubernetes funziona correttamente o meno.

Nota: Per abilitare la funzione di completamento bash sul tuo nodo master, esegui quanto segue

[email protetta]:~$ echo 'source <(kubectl complete bash)'>>~/.bashrc[email protetta]:~$ source .bashrc

Passaggio 6) Testare e verificare il cluster Kubernetes

Creiamo una distribuzione denominata nginx-web con l'immagine del contenitore nginx nello spazio dei nomi predefinito, esegui il seguente comando kubectl dal nodo master,

[email protetta]:~$ kubectl create deployment nginx-web --image=nginxdeployment.apps/nginx-web create[email protetta]:~$

Esegui il comando seguente per verificare lo stato della distribuzione

[email protected]:~$ kubectl get deployments.appsNAME        PRONTO   AGGIORNATO   DISPONIBILE   AGEnginx-web   1/1     1            1           41s[email protected]:~$ kubectl get deployments.apps      READY   -Date Contenitori a età disponibili Immagini SelectOnGinx-Web 1/1 1 1 56S NGINX NGINX APP =NGINX-Web [protezione e-mail]:~ $ [E-mail protetto]:~ $ kubectl Ottieni podsname pronto di stato Riavvia Agenginx-Web-7748f7f78-nk8b2 1 /1     In esecuzione   0          2m50s[protetto da email]:~$

Come possiamo vedere, la distribuzione è stata creata correttamente con la replica predefinita.

Aumentiamo la distribuzione, impostiamo le repliche su 4. Esegui il comando seguente,

[email protected]:~$ kubectl scale --replicas=4 deployment nginx-webdeployment.apps/nginx-web scaled[email protected]:~$

Ora verifica lo stato della tua distribuzione utilizzando i seguenti comandi,

[email protected]:~$ kubectl get deployments.apps nginx-webNAME        PRONTO   AGGIORNATO   DISPONIBILE   AGEnginx-web   4/4     4            4          13m[email protected]:~$[email protected]:~$ deployments.apps nginx-web

Sopra conferma che la distribuzione basata su nginx è stata ampliata correttamente.

Eseguiamo un altro test, creiamo un pod chiamato "http-web" ed esporlo tramite il servizio denominato "http-service" con la porta 80 e NodePort come tipo.

Esegui il comando seguente per creare un pod,

[email protetta]:~$ kubectl run http-web --image=httpd --port=80pod/http-web create[email protetta]:~$

Crea un servizio usando il comando sotto ed esponi il pod sopra creato sulla porta 80,

[email protetta]:~$ kubectl espone pod http-web --name=http-service --port=80 --type=NodePortservice/http-service esposta[email protetta]:~$[email protetta]:~$ kubectl get service http-serviceNAME           TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGEhttp-service   NodePort   10.101.152.138           80:31098/TCP   10s[email protected] 

Ottieni l'IP del nodo o il nome host su cui è distribuito http-web pod e quindi accedi al server web tramite NodePort (31098)

;>[email protetta]:~$[email protetta]:~$ curl http://k8s-node-0:31098

Funziona!

[email protetta]:~$

Perfetto, funziona bene come previsto. Questo conclude l'articolo e conferma che abbiamo configurato correttamente il cluster Kubernetes su Ubuntu 20.04 LTS Server.

Leggi anche :Come configurare il controller di ingresso NGINX in Kubernetes

Leggi ancheCome configurare il registro Docker privato in Kubernetes (k8s)


Ubuntu
  1. Come installare RabbitMQ Server su Ubuntu 18.04 e 16.04 LTS

  2. Come installare Gitlab Server su Ubuntu 18.04 e 16.04 LTS

  3. Come installare R su Ubuntu 18.04 LTS

  4. Come installare il server Xrdp su Ubuntu 20.04 LTS

  5. Come installare R su Ubuntu 20.04 LTS

Come installare Kubernetes su Ubuntu 18.04 LTS

Come installare Kubernetes su Ubuntu 20.04 LTS

Come installare il server FTP su Ubuntu 20.04 LTS

Come installare il server VPN Pritunl su Ubuntu 20.04 LTS

Come installare CUPS Print Server su Ubuntu 20.04 LTS

Come installare Kubernetes su Ubuntu 18.04 LTS