Skip to main content

Servicios

image.png

Un Service en Kubernetes es un recurso que proporciona una abstracción para exponer y acceder a un conjunto de pods de manera estable y confiable. Los serviciospods son laefímeros maneray sus IPs pueden cambiar, por lo que tieneun KubernetesService actúa como un punto fijo de exponerentrada que redirige el tráfico a los serviciospods correctos, incluso si estos son recreados o se mueven a otro nodo.

Funciones principales de redun deservicio:

los
    pods.
  1. Existen tres tipos de servicios ClusterIP, NodePort

    Descubrimiento y LoadBalancer.

    Los tres tipos de servicio aportan una IP interna del cluster de Kubernetes, balanceo de carga:

    y
      permiten
    • resolver

      Distribuye automáticamente el tráfico entre los pods que coincidan con el selector definido.

  2. Dirección IP estable:

    • Mientras que los pods tienen IPs dinámicas, el Service proporciona una IP virtual estable (ClusterIP) o un nombre DNS interno.

  3. Exposición de la aplicación:

    • Puede exponer una aplicación internamente dentro del clúster o externamente hacia internet.

Tipos de servicios en Kubernetes:

  1. ClusterIP (por defecto):

    • Expone el servicio porinternamente nombre (DNS) con una URLdentro del tipoclúster. .namespace.svc.cluster.local'.No es accesible desde fuera.

  2. LosNodePort:

    servicios
      del
    • tipo ‘NodePort' además también aportan

      Abre un puerto públicoen accesiblecada desde fueranodo del cluster.clúster Losy serviciosredirige delel tipotráfico ‘LoadBalancer'a sololos estánpods.

      disponible
  3. LoadBalancer:

    • Crea un balanceador de carga externo (si el clúster está en algunauna nubes públicasnube como Google, AWS, etc.GCP, Azure) y aportanlo tambiénconecta unaal IP pública.servicio.

  4. ExternalName:

    • No redirige tráfico, pero mapea un nombre DNS interno a un nombre DNS externo.

Ejemplo de servicioun "NodePortService" paratipo la app: web. Modifica el fichero "myapp.yml" añadiendo:

NodePort
---
apiVersion: v1
kind: Service
metadata:
  name: service1myservice
spec:
  type: NodePort
  selector:
    app: webmyapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

Funcionamiento

  • El selector app: myapp hace que este Service envíe tráfico a todos los pods que tengan la etiqueta app=myapp.

  • El puerto 80 del Service se mapea al puerto 80 del pod (targetPort).

# AplicaCrea o aplica los cambios
kubectl apply -f myapp.ymlyaml

# comprueba
kubectl get all

NAME        READY   STATUS    RESTARTS   AGE
pod/myapp   1/1     Running   0          15m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        44h
service/service1     NodePort    10.96.146.193   <none>        80:31926/TCP   15m