LINUX

Come installare Kubernetes su Ubuntu 20.04

installa kubernetes ubuntu 20.04

I container sono una buona scelta per raggruppare ed eseguire le nostre applicazioni. Quando il numero di contenitori cresce rapidamente ed è necessario gestirli in modo conveniente. È qui che entra in gioco Kubernetes. Kubernetes (K8s) è un sistema open source per automatizzare la distribuzione, il ridimensionamento e la gestione di applicazioni e servizi containerizzati.

Il cluster Kubernetes contiene nodi master e di lavoro. Il nodo master controlla e gestisce un gruppo di nodi di lavoro. Puoi avere più nodi master per i cluster ad alta disponibilità.

Questo tutorial mostra come installare a Cluster Kubernetes con kubeadm abilitato Ubuntu 20.04.

Preparazione dell’ambiente

  • Usa 2 host Linux che eseguono Ubuntu 20.04

Impostazione degli indirizzi IP statici per il nodo master e il nodo di lavoro

– Nodo principale: 192.168.1.11
– Nodo di lavoro: 192.168.1.12

  • Configurare il nome host per ogni macchina

Useremo il nodo-1 come master e il nodo-2 come nodo di lavoro.

$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2
  • Disabilita la memoria di scambio su ciascun nodo Ubuntu
$ sudo swapoff -a

Aggiungi il repository Kubernetes

Kubernetes non è disponibile nel repository predefinito di Ubuntu, quindi devi aggiungerlo manualmente.

Sia sul nodo master che sul nodo di lavoro Fare quanto segue:

Aggiunta della chiave di firma Kubernetes come segue:

$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Successivamente, aggiungi il repository Kubernetes, esegui:

$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update

Installazione degli strumenti Kubernetes

In questa sezione installeremo Kubeadm, cri-o, Kubelet e Kubernetes-cni. Tutti questi strumenti devono essere installati entrambi i nodi master e di lavoro.

Assicurati di installare la versione consigliata e supportata. Qui installiamo la versione 1.18 di Kubernetes e cryo.

Installa Kubeadm

Kubeadm è uno strumento che fa parte del progetto Kubernetes che aiuta a inizializzare il cluster Kubernetes.

In questo tutorial, installeremo kubeadm versione 1.18.0-00, digita:

$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated

Nota: puoi trovare la versione specifica con il seguente comando:

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

Installa Kubectl

Kubectl è lo strumento della riga di comando di Kubernetes. Ti consente di eseguire comandi nei cluster Kubernetes. Puoi utilizzare kubectl per distribuire applicazioni, gestire le risorse del cluster e visualizzare i log.

Installa kubectl v1.18.0-00 tramite il seguente comando:

$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated

Installa CRI-O

CRI-O è una Container Runtime Interface (CRI) compatibile con OCI. Il runtime più utilizzato è Docker. Dal rilascio di Kubernetes 1.20, Container Runtime Interface (CRI) per Docker è obsoleto. Docker produce immagini che non sono un’immagine OCI (Open Container Initiative).

Dovremmo utilizzare il runtime del contenitore compatibile con OCI per estrarre ed eseguire immagini OCI, soprattutto se utilizzi servizi Kubernetes come GKE, EKS o AKS.

Puoi ancora utilizzare la finestra mobile, quindi installare utilizzando sudo apt-get install docker.io

Qui userò chiamala che è un runtime conforme. Mantieni la corrispondenza della versione cri-o con la versione Kubernetes.

Assicurati di installare versione supportata.

Per prima cosa, usa modprobe comando da caricare copertura e br_netfilter moduli su entrambi i nodi Master e Worker:

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Successivamente, crea un file di configurazione sysctl per abilitare l’inoltro IP e le impostazioni netfilter durante i riavvii inserendo le seguenti righe in /etc/sysctl.d/99-kubernetes-cri.conf file sul nodo Master e Worker:

net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

Applicare il file di configurazione eseguendo:

$ sudo sysctl --system

Ora, specifichiamo il sistema operativo Ubuntu e la versione cri-o come segue:

$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18

Quindi eseguire i seguenti comandi come root utente:

# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# apt update
# apt install cri-o cri-o-runc

Una volta terminata l’installazione, Comune L’utility (Container Monitoring) è stata installata. Trova il percorso della tua comunità:

$ which conmon

/usr/bin/conmon

edizione /etc/crio/crio.conf file come segue:

...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"         #<-- Edit this line. Around line 108

...

registries = [                     #<-- Edit and add registries. Around line 351
        "docker.io",
        "quay.io",
]
....

Abilita cri-o e assicurati che sia in esecuzione:

$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio

Produzione:

● crio.service - Container Runtime Interface for OCI (CRI-O)
   Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
     Docs: https://github.com/cri-o/cri-o
...

Installa Kubelet

Kubelet è un agente che viene eseguito su ciascun nodo ed è responsabile della comunicazione con il server API sul nodo master e della guida del runtime del contenitore per avviare i carichi di lavoro.

Impostare kubelet per capire come interagire con cri-o inserendo la seguente riga at /etc/default/kubelet file:

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint="unix:///var/run/crio/crio.sock" --runtime-request-timeout=5m

Su entrambi i nodi master e di lavoro, eseguire il seguente comando per l’installazione kubelet:

$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated

Installa Kubernetes-cni

Per abilitare la rete di contenitori nel cluster, è necessario installare kubernetes-cni.

Esegui il seguente comando:

$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated

Distribuzione del cluster Kubernetes

La distribuzione del cluster Kubernetes prevede 2 passaggi. Il primo passaggio consiste nell’inizializzare il nodo master e il secondo passaggio nell’associare il nodo di lavoro al cluster.

Inizializza il nodo master

Per inizializzare Kubernetes Il nodo principalegenere:

$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16
kubeadm init
kubeadm init

Ci vorranno alcuni minuti per finire. Una volta eseguita l’inizializzazione, il terminale visualizzerà l’output come segue:

inizializzato con successo
inizializzato con successo

Nota la riga per unirti al cluster contrassegnata sopra, la utilizzerà nel passaggio successivo per unire il nodo di lavoro al cluster.

Ora, esegui il seguente comando per creare la directory di configurazione di Kubernetes sul nodo master:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Successivamente, distribuisci una rete bridge al cluster:

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Verifica che tutti i componenti del piano di controllo siano stati installati correttamente:

$ kubectl get pod --all-namespaces
get pod –all-namespaces
get pod –all-namespaces

Connetti il ​​nodo di lavoro al cluster

Ora connettiti al nodo di lavoro e unisci il nodo di lavoro al cluster.

Sulla macchina del nodo di lavoro, esegui il seguente comando:

$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg 
    --discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e

Al termine del processo di unione, tornare al nodo principale ed eseguire:

$ kubectl get node
NAME     STATUS   ROLES    AGE     VERSION
node-1   Ready    master   2m37s   v1.18.0
node-2   Ready    none     22s     v1.18.0

Per ottenere maggiori informazioni sul nodo, digitare:

$ kubectl get node -owide
NAME     STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node-1   Ready    master   9h    v1.18.0   10.2.0.4              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4
node-2   Ready    none     9h    v1.18.0   10.2.0.5              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4

Gli output mostrano i dettagli del nodo master e dei nodi che si sono uniti al cluster.

Leggi anche: Come installare Kubernetes localmente usando Vagrant/Minikube

Conclusione

Man mano che la containerizzazione diventa popolare, la necessità di gestire carichi di lavoro e servizi containerizzati è ciò che rende Kubernetes così popolare. Tutti i principali fornitori di servizi cloud hanno iniziato a supportare Kubernetes gestito, il che semplifica la vita.

Kubernetes è completamente gratuito e puoi sempre scaricarlo dal suo repository. Spero ti sia piaciuto installare Kubernetes su Ubuntu. Puoi provare a distribuire applicazioni come MySQL o WordPress sul cluster K8.

Grazie per aver letto e per favore lascia il tuo suggerimento nella sezione commenti qui sotto.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close