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

  1. Crear el fitxer de configuració: Guarda el fitxer YAML anterior com pod.yaml.
  2. Aplicar el fitxer de configuració:
    kubectl apply -f pod.yaml
    
  3. 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

  1. Crear el fitxer de configuració: Guarda el fitxer YAML anterior com service.yaml.
  2. Aplicar el fitxer de configuració:
    kubectl apply -f service.yaml
    
  3. 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

  1. 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
    
  2. 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
    
  3. Desplegar el Pod i el Servei:

    kubectl apply -f web-pod.yaml
    kubectl apply -f web-service.yaml
    
  4. 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.

© Copyright 2024. Tots els drets reservats