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
ikind
: 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'etiquetaapp: MyApp
.ports
: Defineix els ports del servei.port
és el port del servei itargetPort
é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
- 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
- Aplica el fitxer al clúster:
- Verifica que el servei s'ha creat correctament:
Exercici 2: Crear un Servei NodePort
- 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
- Aplica el fitxer al clúster:
- Verifica que el servei s'ha creat correctament:
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 itargetPort
é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
- 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