Come installare Kubernetes su 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
Ci vorranno alcuni minuti per finire. Una volta eseguita l’inizializzazione, il terminale visualizzerà l’output come segue:
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
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.