Servicios
Los servicios en Kubernetes son una abstracción que define un conjunto de pods que implementan una aplicación y que pueden ser accedidos a través de una dirección IP y un puerto. Los servicios permiten la comunicación entre los diferentes componentes de una aplicación y también permiten la exposición de aplicaciones a través de la red.
Comandos generales
Crear un servicio
Para crear un servicio en Kubernetes, podemos utilizar el comando kubectl expose pod <nombre_del_pod>
. Por ejemplo, para exponer un servicio que redirige el tráfico al puerto 80 de un pod, podemos ejecutar el siguiente comando:
kubectl expose pod mi-web-apache --port=80 --target-port=80 --type=NodePort --name=mi-servicio-apache-svc
Hay 3 tipos de servicios en Kubernetes:
- ClusterIP: El servicio es accesible solo desde dentro del clúster.
- NodePort: El servicio es accesible desde fuera del clúster a través de un puerto en cada nodo.
- LoadBalancer: El servicio es accesible desde fuera del clúster a través de un balanceador de carga externo.
Ver servicios
Para ver los servicios en un clúster de Kubernetes, podemos utilizar el comando kubectl get services
:
kubectl get services
NOTA: usa
-o wide
para ver más detalles de los servicios.
Para ver los detalles de un servicio en particular, podemos utilizar el comando kubectl describe service <nombre_del_servicio>
:
kubectl describe service mi-servicio-apache-svc
Eliminar un servicio
Para eliminar un servicio, podemos utilizar el comando kubectl delete service <nombre_del_servicio>
:
kubectl delete service mi-servicio-apache-svc
Aplicar mediante manifiesto
También podemos crear un servicio utilizando un manifiesto en formato YAML o JSON. Para ello, creamos un manifiesto con la definición del servicio y luego lo aplicamos con el comando kubectl apply -f <archivo_de_configuracion>
.
kubectl apply -f Kubernetes/manifests/mi-servicio.yaml
Port-forwarding
Podemos redirigir el tráfico de un puerto de un pod o un servicio a un puerto local utilizando el comando kubectl port-forward <nombre_del_servicio> <puerto_local>:<puerto_pod>
. Por ejemplo, para redirigir el tráfico del puerto 80 de un pod al puerto 9000 de local, podemos ejecutar el siguiente comando:
kubectl port-forward mi-servicio-apache-svc 9000:80