Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| — |
introduccio_kubernetes_kind_podman [2026/06/07 12:21] (actual) david_garcia creat |
||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| + | ====== Introducció al desplegament i escalat de serveis multi-node amb Kind i Podman ====== | ||
| + | En aquesta activitat crearem un centre de dades de [[https:// | ||
| + | |||
| + | {{tag> #FpInfor #Asix #AsixMp08 #Ciber #Ceti #CiberMp03 #CetiMp03 }} | ||
| + | |||
| + | ====== Requisits previs ====== | ||
| + | |||
| + | Per a dur a terme l' | ||
| + | |||
| + | * Tenir una instal·lació de l'eina [[https:// | ||
| + | * Un compte a [[https:// | ||
| + | |||
| + | ====== Creació i configuració del contenidor LXD ====== | ||
| + | |||
| + | - Crearem i executarem el contenidor. Farem servir una imatge Ubuntu 24.04.< | ||
| + | lxc launch ubuntu: | ||
| + | </ | ||
| + | - Configurem l' | ||
| + | lxc shell asix-k8s-lab | ||
| + | passwd ubuntu | ||
| + | exit | ||
| + | lxc exec asix-k8s-lab login | ||
| + | </ | ||
| + | - Per a treballar amb Kubernetes farem servir [[https:// | ||
| + | sudo apt update && sudo apt upgrade -y | ||
| + | sudo apt install podman -y | ||
| + | sudo curl -LO " | ||
| + | sudo install -o root -g root -m 0755 kubectl / | ||
| + | sudo curl -Lo ./kind https:// | ||
| + | sudo chmod +x ./kind | ||
| + | sudo mv ./kind / | ||
| + | </ | ||
| + | - Iniciem sessió a **docker.io** a **podman**.< | ||
| + | exit | ||
| + | lxc config set asix-k8s-lab raw.lxc " | ||
| + | lxc restart asix-k8s-lab | ||
| + | lxc exec asix-k8s-lab login | ||
| + | |||
| + | sudo nano / | ||
| + | </ | ||
| + | # Registres que Podman farà servir quan s' | ||
| + | unqualified-search-registries = [" | ||
| + | |||
| + | # Comportament amb noms amb ambigüitat. | ||
| + | short-name-mode = " | ||
| + | </ | ||
| + | podman login docker.io | ||
| + | </ | ||
| + | - Creem el //cluster// multi-node amb **kind**. < | ||
| + | mkdir cluster | ||
| + | cd cluster | ||
| + | |||
| + | cat <<EOF > kind-config.yaml | ||
| + | kind: Cluster | ||
| + | apiVersion: kind.x-k8s.io/ | ||
| + | nodes: | ||
| + | - role: control-plane | ||
| + | - role: worker | ||
| + | - role: worker | ||
| + | EOF | ||
| + | |||
| + | sudo mkdir -p /dev/mapper | ||
| + | |||
| + | export KIND_EXPERIMENTAL_PROVIDER=podman | ||
| + | kind create cluster --config kind-config.yaml --name asix-cluster | ||
| + | </ | ||
| + | - Verifiquem que el cluster ha estat creat correctament i el visualitzem a podman. < | ||
| + | podman ps | ||
| + | </ | ||
| + | kubectl get nodes | ||
| + | </ | ||
| + | |||
| + | ====== Desplegament d'un servei web al nostre cluster ====== | ||
| + | |||
| + | Ara utilitzarem comandes de **kubernetes** per a desplegar un manifest d' | ||
| + | |||
| + | < | ||
| + | # Escrivim un manifest de desplegament configurant una rèplica de Nginx | ||
| + | cat <<EOF > nginx-deployment.yaml | ||
| + | apiVersion: apps/v1 | ||
| + | kind: Deployment | ||
| + | metadata: | ||
| + | name: asix-web-server | ||
| + | spec: | ||
| + | replicas: 1 | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: web | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: web | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: nginx | ||
| + | image: docker.io/ | ||
| + | ports: | ||
| + | - containerPort: | ||
| + | EOF | ||
| + | |||
| + | # Li diem al cluster que implementi el fitxer d' | ||
| + | kubectl apply -f nginx-deployment.yaml | ||
| + | </ | ||
| + | |||
| + | Fixeu-vos en que hem utilitzat una imatge de **docker.io** de Nginx per a fer el nostre desplegament. Aquesta és la gran avantatge d' | ||
| + | < | ||
| + | kubectl get pods -o wide | ||
| + | </ | ||
| + | |||
| + | ====== Escalem el nostre servei web ====== | ||
| + | |||
| + | Imaginem, per exemple, que el servidor web experimenta una quantitat de tràfic enorme perquè s'hi ha publicat una pàgina nova extremadament popular. Un sol //pod// no dona a l' | ||
| + | < | ||
| + | kubectl scale deployment asix-web-server --replicas=5 | ||
| + | |||
| + | kubectl get pods -o wide | ||
| + | </ | ||
| + | |||
| + | Com podeu veure, hem escalat el sistema a un total de cinc instàncies del servei web de forma **instantània**, | ||
| + | |||
| + | ====== Eliminació dels nodes ====== | ||
| + | |||
| + | Per acabar, eliminarem els nodes que hem creat a aquesta activitat: | ||
| + | < | ||
| + | kind delete cluster --name asix-cluster | ||
| + | </ | ||