En aquest tema, explorarem els serveis en Kubernetes, una de les peces fonamentals per a la comunicació entre components dins d'un clúster. Els serveis permeten exposar aplicacions executant-se en un conjunt de pods, fent-les accessibles tant dins com fora del clúster.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs après:

  • Què és un servei en Kubernetes.
  • Els diferents tipus de serveis disponibles.
  • Com crear i gestionar serveis.
  • Com utilitzar serveis per exposar aplicacions.

Què és un Servei?

Un servei en Kubernetes és un objecte que defineix una política d'accés a un conjunt de pods. Els serveis permeten la descoberta i el balanç de càrrega entre els pods, assegurant que les aplicacions siguin accessibles de manera consistent.

Característiques Clau dels Serveis:

  • IP Virtual: Cada servei té una IP virtual que es manté constant, independentment dels canvis en els pods.
  • Balanç de Càrrega: Distribueix el tràfic entre els pods associats.
  • Descoberta de Serveis: Permet que altres components del clúster trobin i es comuniquin amb els serveis.

Tipus de Serveis

Kubernetes ofereix diversos tipus de serveis per satisfer diferents necessitats de xarxa:

Tipus de Servei Descripció
ClusterIP Exposa el servei dins del clúster. Aquest és el tipus per defecte.
NodePort Exposa el servei en un port estàtic en cada node del clúster.
LoadBalancer Exposa el servei externament utilitzant un balançador de càrrega del núvol.
ExternalName Mapeja el servei a un nom DNS extern.

ClusterIP

Aquest tipus de servei només és accessible dins del clúster. És útil per a la comunicació interna entre components.

NodePort

Aquest tipus de servei exposa el servei en un port específic de cada node del clúster, permetent l'accés extern al clúster.

LoadBalancer

Aquest tipus de servei crea un balançador de càrrega extern que distribueix el tràfic entre els pods. És útil per exposar serveis a Internet.

ExternalName

Aquest tipus de servei mapeja un nom DNS extern a un servei dins del clúster. És útil per integrar serveis externs.

Creació d'un Servei

Exemple de Servei ClusterIP

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Explicació del Codi:

  • apiVersion i kind: Defineixen el tipus d'objecte (Servei) i la seva versió d'API.
  • metadata: Conté informació com el nom del servei.
  • spec: Defineix les especificacions del servei.
    • selector: Selecciona els pods amb l'etiqueta app: MyApp.
    • ports: Defineix els ports del servei. port és el port del servei i targetPort és el port del pod.

Exemple de Servei NodePort

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
      nodePort: 30007

Explicació del Codi:

  • type: NodePort: Defineix el tipus de servei com NodePort.
  • nodePort: Especifica el port estàtic en cada node.

Exercicis Pràctics

Exercici 1: Crear un Servei ClusterIP

  1. Crea un fitxer YAML anomenat clusterip-service.yaml amb el següent contingut:
apiVersion: v1
kind: Service
metadata:
  name: my-clusterip-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  1. Aplica el fitxer al clúster:
kubectl apply -f clusterip-service.yaml
  1. Verifica que el servei s'ha creat correctament:
kubectl get services

Exercici 2: Crear un Servei NodePort

  1. Crea un fitxer YAML anomenat nodeport-service.yaml amb el següent contingut:
apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
      nodePort: 30007
  1. Aplica el fitxer al clúster:
kubectl apply -f nodeport-service.yaml
  1. Verifica que el servei s'ha creat correctament:
kubectl get services

Errors Comuns i Consells

  • Selector Incorrecte: Assegura't que el selector del servei coincideixi amb les etiquetes dels pods.
  • Ports Confosos: Recorda que port és el port del servei i targetPort és el port del pod.
  • NodePort Fora de Rang: Els ports NodePort han d'estar dins del rang 30000-32767.

Resum

En aquest tema, hem après què són els serveis en Kubernetes, els diferents tipus de serveis disponibles, i com crear i gestionar serveis. Els serveis són essencials per a la comunicació entre components dins d'un clúster i per exposar aplicacions a l'exterior. Amb aquesta base, estàs preparat per explorar més components de Kubernetes i construir aplicacions més complexes.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats