En Kubernetes, els serveis són una manera d'exposar una aplicació que s'executa en un conjunt de pods com una xarxa de servei. Els serveis permeten la comunicació entre diferents components d'una aplicació o entre aplicacions diferents. En aquest tema, explorarem els diferents tipus de serveis que ofereix Kubernetes.

Tipus de Serveis en Kubernetes

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

  1. ClusterIP (Per defecte)
  2. NodePort
  3. LoadBalancer
  4. ExternalName

  1. ClusterIP

El tipus de servei per defecte. Exposa el servei dins del clúster Kubernetes, fent-lo accessible només des de dins del clúster.

  • Ús: Comunicació interna entre pods dins del mateix clúster.
  • Exemple de YAML:
apiVersion: v1
kind: Service
metadata:
  name: my-clusterip-service
spec:
  type: ClusterIP
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

  1. NodePort

Exposa el servei en un port estàtic en cada node del clúster. Això permet accedir al servei des de fora del clúster utilitzant l'adreça IP del node i el port especificat.

  • Ús: Accés extern al servei sense necessitat d'un balançador de càrrega.
  • Exemple de YAML:
apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30007

  1. LoadBalancer

Exposa el servei externament utilitzant un balançador de càrrega del proveïdor de núvol. Aquest tipus de servei crea un balançador de càrrega extern que distribueix el trànsit entre els pods del servei.

  • Ús: Accés extern amb balanç de càrrega automàtic proporcionat pel proveïdor de núvol.
  • Exemple de YAML:
apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  type: LoadBalancer
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

  1. ExternalName

Mapeja el servei a un nom DNS extern. Aquest tipus de servei no utilitza selectors i no crea cap IP de clúster. En canvi, retorna un registre CNAME amb el nom especificat.

  • Ús: Redirigir el trànsit a un servei extern fora del clúster.
  • Exemple de YAML:
apiVersion: v1
kind: Service
metadata:
  name: my-externalname-service
spec:
  type: ExternalName
  externalName: example.com

Comparació de Tipus de Serveis

Tipus de Servei Accés Intern Accés Extern Balanç de Càrrega Ús Comú
ClusterIP No No Comunicació interna
NodePort No Accés extern directe
LoadBalancer Accés extern amb balanç de càrrega
ExternalName No Redirecció a serveis externs

Exercici Pràctic

Objectiu

Crear un servei de tipus NodePort que exposi una aplicació web en un port específic.

Passos

  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: 8080
      nodePort: 30007
  1. Aplica el fitxer YAML al teu clúster Kubernetes:
kubectl apply -f nodeport-service.yaml
  1. Verifica que el servei s'ha creat correctament:
kubectl get services
  1. Accedeix a l'aplicació web utilitzant l'adreça IP del node i el port 30007.

Solució

Si has seguit els passos correctament, hauràs creat un servei de tipus NodePort que exposa la teva aplicació web en el port 30007 de cada node del clúster.

Conclusió

En aquesta secció, hem explorat els diferents tipus de serveis que ofereix Kubernetes i com utilitzar-los per exposar aplicacions dins i fora del clúster. Hem vist exemples pràctics de cada tipus de servei i hem realitzat un exercici per reforçar els conceptes apresos. En el següent tema, aprofundirem en els Ingress Controllers, que proporcionen una manera més avançada de gestionar l'accés extern a les aplicacions.

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