meta data de esta página

Service

Con los Service Kubernetes nos permite utilizar una única ip y un único nombre dns para un conjunto de pods que definamos mediante etiquetas (label) Tipos de servicio:

  • Clusterip → Es el tipo por defecto. Crea una ip virtual dentro del cluster. Solo podemos acceder internamente entre distintos servicios, para acceder desde el exterior tenemos que usar kubectl proxy
  • NodePort →expone un puerto (por defecto entre: 30000-32767) del nodo para que podamos acceder desde el exterior. Para acceder usamos la ip del servidor master y el puerto asignado
  • LoadBalancer → Sólo está soportado en servidos de nube pública (AWS, GKE, etc)

Ejemplo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-test
  labels:
    app: front
spec:
  replicas: 3
  selector:
    matchLabels:
      app: front
  template:
    metadata:
      labels:
        app: front
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
---
apiVersion: v1
kind: Service              # Definimos el Service 
metadata:
  name: mi-servicio
  labels:
    app: front
spec:
  type: ClusterIP       #tipo de servicio
  selector:
    app: front
  ports:
    - protocol: TCP
      port: 8080                  # Puerto en donde tenemos el service la escucha de las peticiones
      targetPort: 80           # Puerto d elos pods donde enviar las peticiones que llegan al service
      

Comandos

Mostrar los servicios

kubectl get svc

Ver los services con una determinada etiqueta

kubectl get svc -l app=<etiqueta>

Mostrar los endpoints

kubectl describe endpoint <nombreservicio>

Crear un service desde la línea de comandos

kubectl expose nginx/nginx --port=80 --type=NodePort

Referencias