===== 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= == Mostrar los endpoints == kubectl describe endpoint == Crear un service desde la línea de comandos == kubectl expose nginx/nginx --port=80 --type=NodePort ==== Referencias ==== * https://kubernetes.io/docs/concepts/services-networking/service/ * https://github.com/ricardoandre97/k8s-resources/tree/master/service * https://refactorizando.com/clusterip-vs-loadbalancer-vs-nodeport-vs-ingress-en-kubernetes/ * https://www.josedomingo.org/pledin/2018/11/recursos-de-kubernetes-services/