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:
- ClusterIP (Per defecte)
- NodePort
- LoadBalancer
- ExternalName
- 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
- 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
- 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
- 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 | Sí | No | No | Comunicació interna |
| NodePort | Sí | Sí | No | Accés extern directe |
| LoadBalancer | Sí | Sí | Sí | Accés extern amb balanç de càrrega |
| ExternalName | Sí | Sí | 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
- Crea un fitxer YAML anomenat
nodeport-service.yamlamb 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- Aplica el fitxer YAML al teu clúster Kubernetes:
- Verifica que el servei s'ha creat correctament:
- 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
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster
