Introducció

Kubernetes és una plataforma d'orquestració de contenidors que automatitza el desplegament, l'escalat i la gestió d'aplicacions contenidoritzades. És una eina essencial per gestionar microserveis en entorns de producció, ja que proporciona eines per assegurar la disponibilitat, la resiliència i l'escalabilitat dels serveis.

Conceptes Clau de Kubernetes

  1. Clúster

Un clúster de Kubernetes està format per un conjunt de màquines (nodes) que executen aplicacions contenidoritzades. Hi ha dos tipus de nodes:

  • Node Mestre: Gestiona el clúster i coordina totes les activitats, com ara l'escalat i el desplegament.
  • Nodes de Treball: Executen les aplicacions contenidoritzades.

  1. Pod

Un Pod és la unitat bàsica de desplegament en Kubernetes. Un Pod pot contenir un o més contenidors que comparteixen el mateix espai de xarxa i emmagatzematge.

  1. ReplicaSet

Un ReplicaSet assegura que un nombre específic de rèpliques d'un Pod estiguin executant-se en tot moment. Si un Pod falla, el ReplicaSet crea un nou Pod per reemplaçar-lo.

  1. Deployment

Un Deployment proporciona actualitzacions declaratives per als Pods i els ReplicaSets. Permet desplegar noves versions de l'aplicació de manera controlada.

  1. Service

Un Service és una abstracció que defineix un conjunt lògic de Pods i una política per accedir-hi. Els serveis permeten la comunicació entre diferents components de l'aplicació.

  1. ConfigMap i Secret

  • ConfigMap: Emmagatzema dades de configuració no confidencials en parelles clau-valor.
  • Secret: Emmagatzema dades confidencials, com ara contrasenyes i claus d'API, de manera segura.

Desplegament d'un Microservei amb Kubernetes

Pas 1: Crear un Fitxer de Configuració de Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: microservei-exemple
spec:
  replicas: 3
  selector:
    matchLabels:
      app: microservei-exemple
  template:
    metadata:
      labels:
        app: microservei-exemple
    spec:
      containers:
      - name: microservei-exemple
        image: exemple/microservei:latest
        ports:
        - containerPort: 8080

Explicació del Fitxer de Configuració

  • apiVersion: La versió de l'API de Kubernetes que s'utilitza.
  • kind: El tipus de recurs que es crea, en aquest cas, un Deployment.
  • metadata: Informació sobre el Deployment, com ara el nom.
  • spec: L'especificació del Deployment.
    • replicas: El nombre de rèpliques del Pod.
    • selector: Defineix com seleccionar els Pods gestionats per aquest Deployment.
    • template: El model per crear els Pods.
      • metadata: Etiquetes per identificar els Pods.
      • spec: L'especificació dels contenidors dins del Pod.
        • containers: Una llista de contenidors que s'executaran dins del Pod.
          • name: El nom del contenidor.
          • image: La imatge del contenidor.
          • ports: Els ports exposats pel contenidor.

Pas 2: Crear un Fitxer de Configuració de Service

apiVersion: v1
kind: Service
metadata:
  name: microservei-exemple-service
spec:
  selector:
    app: microservei-exemple
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

Explicació del Fitxer de Configuració

  • apiVersion: La versió de l'API de Kubernetes que s'utilitza.
  • kind: El tipus de recurs que es crea, en aquest cas, un Service.
  • metadata: Informació sobre el Service, com ara el nom.
  • spec: L'especificació del Service.
    • selector: Defineix com seleccionar els Pods gestionats per aquest Service.
    • ports: Els ports exposats pel Service.
      • protocol: El protocol utilitzat (TCP en aquest cas).
      • port: El port exposat pel Service.
      • targetPort: El port al qual el Service redirigeix el tràfic dins del Pod.
    • type: El tipus de Service (LoadBalancer en aquest cas).

Pas 3: Desplegar el Microservei

  1. Aplicar el Deployment:

    kubectl apply -f deployment.yaml
    
  2. Aplicar el Service:

    kubectl apply -f service.yaml
    

Verificar el Desplegament

  • Llistar els Pods:

    kubectl get pods
    
  • Llistar els Services:

    kubectl get services
    

Exercici Pràctic

Objectiu

Desplegar un microservei simple utilitzant Kubernetes i verificar que està funcionant correctament.

Passos

  1. Crear un fitxer deployment.yaml amb la configuració del Deployment.
  2. Crear un fitxer service.yaml amb la configuració del Service.
  3. Aplicar els fitxers de configuració utilitzant kubectl.
  4. Verificar que els Pods i el Service estan funcionant correctament.

Solució

  1. Fitxer deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: microservei-exemple
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: microservei-exemple
      template:
        metadata:
          labels:
            app: microservei-exemple
        spec:
          containers:
          - name: microservei-exemple
            image: exemple/microservei:latest
            ports:
            - containerPort: 8080
    
  2. Fitxer service.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: microservei-exemple-service
    spec:
      selector:
        app: microservei-exemple
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer
    
  3. Aplicar els fitxers de configuració:

    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    
  4. Verificar el desplegament:

    kubectl get pods
    kubectl get services
    

Conclusió

En aquesta secció, hem après els conceptes clau de Kubernetes i com utilitzar-los per desplegar un microservei. Hem creat fitxers de configuració per a un Deployment i un Service, i hem aplicat aquests fitxers per desplegar el microservei en un clúster de Kubernetes. Aquest coneixement és fonamental per gestionar aplicacions de microserveis en entorns de producció, assegurant la seva disponibilitat, resiliència i escalabilitat.

© Copyright 2024. Tots els drets reservats