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.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
- 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