Get it on Google Play
Mas de 21 años en el mundo del IT corporativo

Descubrimiento de servicios en kubernetes

26-08-2019
kubernetes networking

kubernetes networking

Aquí tenemos el vídeo dedicado a Kubernetes de esta semana, concretamente aprenderemos como se descubren los servicios vía DNS. El descubrimiento de servicios es vital para poder diseñar una buena arquitectura. Vamos a ver el vídeo:

Creación de los pods

En el vídeo hemos creado dos pods, uno que contenía dos contenedores(httpd y ubuntu) y otro que solamente contenía un contenedor(httpd). Cada pod, tenga uno o cincuenta contenedores, tendra una única IP.

Para poder tener una visión mas amplia hemos creado los pods usando dos métodos distintos. El primero hemos creado un fichero yml(app1.yml) con la configuración:

---
apiVersion: v1
 
kind: Pod
 
metadata:
  name: miapp
  labels:
    app: web
 
spec:
  containers:
    - name: front
      image: httpd:latest
      ports:
        - containerPort: 80

    - name: back
      image: ubuntu:latest
      command: ["/bin/sh"]
      args: ["-c", "while true; do echo hello; sleep 10;done"]

Y lo hemos arrancado con:

kubectl apply -f app1.yml

# Para ver que tal se han arrancado
kubectl get pods

En el segundo caso hemos arrancado directamente con la instrucción:

kubectl create deployment hello-http --image=httpd:latest

Conectarse a un contenedor

En el vídeo nos hemos conectado a un contenedor que estaba dentro del pod app1, para ello hemos ejecutado:

kubectl exec -it app1 -c front /bin/bash

Hemos usado el parámetro ‘-c’ para indicar el contenedor dentro del pod, si el pod solo tiene un contenedor no hace falta.

También hemos instalado unos paquetes para poder trabajar con internet, concretamente los comandos para poder hacer ping y wget. Lo hemos hecho de la siguiente manera:

apt-get update
apt-get install -y iputils-ping
apt-get install -y wget

Una vez hemos hecho esto hemos comprobado que teníamos acceso vía DNS al propio pod pero que no teníamos acceso a otros pods.

Exponer servicios

Para poder exponer los servicios de un pod hemos tenido que crear un servicio. Para ello hemos usado la siguiente instrucción:

kubectl expose deployment hello-http --port=80 --type=ClusterIP

# Si queremos exponer el despliegue del fichero
kubectl expose -f app1.yml --port=80 --type=ClusterIP

Recordad que tenemos tres tipos de exposición:

  • LoadBalancer: Disponible solo en el cloud de Google, Amazon o similares. Ya los usamos en el anterior vídeo de Kubernetes donde veíamos como desplegar aplicaciones sobre el cloud de Google.
  • NodePort: Este tipo de exposición abre un puerto en el nodo Máster del cluster para acceso público o desde el mismo cluster.
  • ClusterIP: Expone un puerto solo accesible desde dentro del cluster. Es el valor por defecto y tenemos la opción ‘kubectl proxy’ para acceder desde el exterior, solo para debug.

Y a partir de aquí ya tenemos acceso al pod ‘hello-http’ desde ‘app1’ vía DNS. No os olvidéis de tener en cuenta los consejos que os dejo al final del vídeo.

Si te ha servido, por favor comparte

Interesado en formación Docker?

 

Comments

2 Responses to “Descubrimiento de servicios en kubernetes”
  1. Elmer Gonzalez says:

    Hola Albert, tengo una pregunta cómo expongo desde un entorno local páginas web al exterior desde dos pods o contenedores diferentes, y que sean igualmente explorados desde el exterior. Débora hacer algo en el router?? Gracias por tu contenido…

  2. Abrir router y poner un proxy tipo nginx o similar

Leave a Reply