6.1 Describiendo services
Services NodePort
Suponemos que tenemos desplegado nginx usando el fichero yaml: nginx-deployment.yaml
:
kubectl apply -f nginx-deployment.yaml
Por lo tanto tenemos dos Pods ofreciendo el servidor web nginx, a los que queremos acceder desde el exterior y que se balancee la carga entre ellos.
Aunque podríamos crear un recurso Service desde la línea de comandos:
kubectl expose deployment/nginx --port=80 --type=NodePort
Normalmente lo que hacemos es describir las características del Service en un fichero yaml nginx-srv.yaml
:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- name: service-http
port: 80
targetPort: http
selector:
app: nginx
Veamos la descripción:
- Vamos a crear un recurso Service (parámetro
kind
) y lo nombramos comonginx
(parámetroname
). Este nombre será importante para la resolución dns. - En la especificación del recurso indicamos el tipo de Service (parámetro
type
). - A continuación, definimos el puerto por el que va a ofrecer el Service y lo nombramos (dentro del apartado
port
: el parámetroport
y el parámetroname
). Además, debemos indicar el puerto en el que los Pods están ofreciendo el Service (parámetrotargetPort
), en este caso, hemos usado el nombre del puerto (http
) que indicamos en el recurso Deployment:
...
ports:
- name: http
containerPort: 80
...
- Por ultimo, seleccionamos los Pods a los que vamos acceder y vamos a balancear la carga seleccionando los Pods por medio de sus etiquetas (parámetro
selector
).