En aquest tema, aprendrem com desplegar contenidors Docker en un clúster de Kubernetes. Kubernetes és una plataforma d'orquestració de contenidors que automatitza el desplegament, l'escalat i la gestió d'aplicacions contenidoritzades.
Objectius
- Entendre els conceptes bàsics de Kubernetes.
- Aprendre a crear i desplegar un Pod en Kubernetes.
- Gestionar el cicle de vida dels contenidors en Kubernetes.
- Utilitzar serveis per exposar aplicacions desplegades.
Conceptes Bàsics de Kubernetes
Components Clau de Kubernetes
- Pod: La unitat bàsica de desplegament en Kubernetes. Un Pod pot contenir un o més contenidors.
- Node: Una màquina (física o virtual) que executa Pods.
- Cluster: Un conjunt de nodes gestionats per Kubernetes.
- Service: Un objecte que exposa un conjunt de Pods com un servei de xarxa.
- Deployment: Un objecte que gestiona el desplegament i l'escalat d'un conjunt de Pods.
Arquitectura de Kubernetes
Component | Descripció |
---|---|
Master Node | Gestiona l'estat del clúster i coordina les activitats dels nodes de treball. |
Worker Node | Executa els contenidors i gestiona els recursos necessaris per a les aplicacions. |
etcd | Emmagatzematge de dades distribuït per a la configuració del clúster. |
kube-apiserver | API que interactua amb el clúster. |
kube-scheduler | Assigna els Pods als nodes disponibles. |
kube-controller-manager | Gestiona els controladors que regulen l'estat del clúster. |
kubelet | Agent que s'executa en cada node i assegura que els contenidors s'executin. |
kube-proxy | Gestiona les regles de xarxa per als serveis. |
Creant i Desplegant un Pod
Exemple de Fitxer de Configuració de Pod
apiVersion: v1 kind: Pod metadata: name: my-first-pod spec: containers: - name: my-container image: nginx:latest ports: - containerPort: 80
Desplegant el Pod
- Crear el fitxer de configuració: Guarda el fitxer YAML anterior com
pod.yaml
. - Aplicar el fitxer de configuració:
kubectl apply -f pod.yaml
- Verificar l'estat del Pod:
kubectl get pods
Gestionant el Cicle de Vida dels Contenidors
Comandes Bàsiques de Kubernetes
- Llistar Pods:
kubectl get pods
- Descriure un Pod:
kubectl describe pod my-first-pod
- Eliminar un Pod:
kubectl delete pod my-first-pod
Utilitzant Serveis per Exposar Aplicacions
Exemple de Fitxer de Configuració de Servei
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
Desplegant el Servei
- Crear el fitxer de configuració: Guarda el fitxer YAML anterior com
service.yaml
. - Aplicar el fitxer de configuració:
kubectl apply -f service.yaml
- Verificar l'estat del Servei:
kubectl get services
Exercici Pràctic
Objectiu
Desplegar una aplicació web simple utilitzant un Pod i exposar-la mitjançant un Servei.
Passos
-
Crear un fitxer de configuració de Pod:
apiVersion: v1 kind: Pod metadata: name: web-pod labels: app: web spec: containers: - name: web-container image: nginx:latest ports: - containerPort: 80
-
Crear un fitxer de configuració de Servei:
apiVersion: v1 kind: Service metadata: name: web-service spec: selector: app: web ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
-
Desplegar el Pod i el Servei:
kubectl apply -f web-pod.yaml kubectl apply -f web-service.yaml
-
Verificar l'estat del Pod i el Servei:
kubectl get pods kubectl get services
Solució
-
Fitxer
web-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: web-pod labels: app: web spec: containers: - name: web-container image: nginx:latest ports: - containerPort: 80
-
Fitxer
web-service.yaml
:apiVersion: v1 kind: Service metadata: name: web-service spec: selector: app: web ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
Resum
En aquest tema, hem après a desplegar contenidors Docker en un clúster de Kubernetes. Hem cobert els conceptes bàsics de Kubernetes, com crear i gestionar Pods, i com utilitzar serveis per exposar les nostres aplicacions. A més, hem realitzat un exercici pràctic per consolidar els coneixements adquirits. En el proper tema, explorarem com escalar i equilibrar la càrrega de les nostres aplicacions en Kubernetes.
Docker: De Principiant a Avançat
Mòdul 1: Introducció a Docker
- Què és Docker?
- Instal·lant Docker
- Arquitectura de Docker
- Comandes bàsiques de Docker
- Entenent les imatges de Docker
- Creant el teu primer contenidor Docker
Mòdul 2: Treballant amb imatges Docker
- Docker Hub i Repositoris
- Construint imatges Docker
- Conceptes bàsics de Dockerfile
- Gestionant imatges Docker
- Etiquetant i pujant imatges
Mòdul 3: Contenidors Docker
- Executant contenidors
- Cicle de vida del contenidor
- Gestionant contenidors
- Xarxes a Docker
- Persistència de dades amb volums
Mòdul 4: Docker Compose
- Introducció a Docker Compose
- Definint serveis a Docker Compose
- Comandes de Docker Compose
- Aplicacions multi-contenidor
- Variables d'entorn a Docker Compose
Mòdul 5: Conceptes avançats de Docker
- Exploració profunda de xarxes Docker
- Opcions d'emmagatzematge de Docker
- Millors pràctiques de seguretat de Docker
- Optimitzant imatges Docker
- Registre i monitoratge de Docker
Mòdul 6: Docker en producció
- CI/CD amb Docker
- Orquestrant contenidors amb Docker Swarm
- Introducció a Kubernetes
- Desplegant contenidors Docker a Kubernetes
- Escalat i equilibrat de càrrega