Instal·lació de Kubernetes a Debian 10
Introducció
Kubernetes és un sistema per la gestió de contenidors, orientat al desplegament de microserveis i aplicacions sobre una infraestructura de clúster, amb un node mestre (master) i un o més nodes treballadors (worker o minion).
Veurem com és la instal·lació a Debian 10 d’un entorn mínim de Kubernetes per aprendre i practicar. Com a requeriment previ, hem de tenir instal·lat Docker, tal com vam veure en un tutorial anterior.
Instal·lació de kubectl
Kubectl és l’eina de línia de comandes de Kubernetes, i permet gestionar els clústers i desplegar aplicacions. Per instal·lar-ho, com de costum, comencem actualitzant l’index de paquets:
sudo apt-get update
A continuació, instal·lem el paquets necessaris per accedir al repositori de Kubernets :
sudo apt install -y apt-transport-https ca-certificates curl
Descarreguem la clau pública de Google Cloud:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
Afegim el repopsitori de Kubernetes :
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
Tornem a actualitzar l’índex amb el nou repositori:
sudo apt-get update
I instal·lem kubectl:
sudo apt-get install -y kubectl
Instal·lació de minikube
Minikube és una eina que ens permet tenir un entorn de Kubernetes en un únic node, per aprendre o per desenvolupar i provar aplicacions. Els requeriments mínims per executar-la són:
- 2 CPUs
- 2 GB de memòria
- 20 GB d’espai a disc
- Connexió a Internet
- Un gestor de contenidors, com Docker
Per instal·lar-ho, descarreguem el paquet:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
I l’instal·lem:
sudo dpkg -i minikube_latest_amd64.deb
Inicialització del clúster minikube i desplegament d’una aplicació
Arrenquem el clúster de minikube :
minikube start
La sortida serà similar a això :
* minikube v1.23.2 on Debian 10.4 * Using the docker driver based on user configuration * Starting control plane node minikube in cluster minikube * Pulling base image ... * Downloading Kubernetes v1.22.2 preload ... > gcr.io/k8s-minikube/kicbase: 355.39 MiB / 355.40 MiB 100.00% 3.08 MiB p/ > preloaded-images-k8s-v13-v1...: 511.84 MiB / 511.84 MiB 100.00% 4.37 MiB * Creating docker container (CPUs=2, Memory=2200MB) ... * Preparing Kubernetes v1.22.2 on Docker 20.10.8 ... - Generating certificates and keys ... - Booting up control plane ... - Configuring RBAC rules ... * Verifying Kubernetes components... - Using image gcr.io/k8s-minikube/storage-provisioner:v5 * Enabled addons: storage-provisioner, default-storageclass * Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Accedim al clúster amb kubectl :
minikube kubectl -- get po -A
Que ens mostrarà una sortida com aquesta:
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s > kubectl: 44.73 MiB / 44.73 MiB [-------------] 100.00% 10.44 MiB p/s 4.5s NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-78fcd69978-wsl6l 1/1 Running 0 107s kube-system etcd-minikube 1/1 Running 0 119s kube-system kube-apiserver-minikube 1/1 Running 0 119s kube-system kube-controller-manager-minikube 1/1 Running 0 2m kube-system kube-proxy-55674 1/1 Running 0 107s kube-system kube-scheduler-minikube 1/1 Running 0 119s kube-system storage-provisioner 1/1 Running 1 (76s ago) 118s
Podem crear un alies que ens facilitarà escriure les comandes a la consola:
alias kubectl="minikube kubectl --"
Podem crear un desplegament d’exemple i publicar-lo pel port 8080:
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 kubectl expose deployment hello-minikube --type=NodePort --port=8080
Podem comprovar l’estat amb:
kubectl get services hello-minikube
Que ens mostrarà quelcom similar a això:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-minikube NodePort 10.98.108.46 <none> 8080:30601/TCP 48s
Redirigim al port 8090 amb la comanda:
kubectl port-forward service/hello-minikube 8090:8080
I ja podem accedir a l’aplicació amb la URL http://ipdelservidor:8090/