@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Kubernetes - Crear containers (Docker) sobre Kubernetes
crear-containers-docker-sobre-kubernetes-1

Crear containers (Docker) sobre Kubernetes

Crear containers (Docker) sobre Kubernetes

El otro día os explicamos cómo crear un cluster de Kubernetes sobre Debian. Partimos de 3 nodos:

  • KBMASTER: Master del clúster de Kubernetes
  • KUBERNETES01: Nodos del clúster de Kubernetes
  • KUBERNETES02: Nodo del clúster de Kubernetes

Hoy vamos a explicar las operaciones básicas para gestionar contenedores o containers sobre dicha plataforma de Kubernetes.

Lo primero sería hacer un pequeño resumen de los diferentes componentes, os dejo el enlace de la entrada sobre conceptos básicos en Kubernetes:

Para el despliegue de una aplicación utilizaremos el comando kubectl que es el equivalente a docker-compose.

Crear un Pod en Kubernetes

Lo primero que generaremos es un Pod, que como ya explicamos es uno o varios containers unidos entre sí para su administración y creación de redes.

Para esta prueba utilizaremos el más básico que existe como es hello-app, que constará de un solo container. Lo generaremos con el comando kubectl run:

kubectl run hello-world-pod-elblogdenegu --image=gcr.io/google-samples/hello-app:2.0 --generator=run-pod/v1

crear-containers-docker-sobre-kubernetes-2

Podemos verificar su estado con el siguiente comando:

kubectl get pods -o wide

También nos dará una IP y en qué nodo corre:

crear-containers-docker-sobre-kubernetes-3

Si queremos saber más datos del Pod podemos usar:

kubectl describe pod hello-world-pod-elblogdenegu

crear-containers-docker-sobre-kubernetes-5

Pero existen dos «pegas» con este Pod:

  • Por una parte dispone de una IP interna. Y sólo podremos verificar su estado internamente, por ejemplo con CURL. Lo haremos desde el nodo donde corre:
    • curl http://10.69.2.8:8080

crear-containers-docker-sobre-kubernetes-4

  • No se ha generado un Deployment, y eso implica que somos responsables del estado del Pod y sus containers (y para olvidarnos un poco de esto queremos usar Kubernetes)

Eliminar Pod en Kubernetes

Podemos eliminar un Pod en Kubernetes de la siguiente forma:

kubectl delete pod hello-world-pod-elblogdenegu

crear-containers-docker-sobre-kubernetes-6

Así que seguimos…

Crear deployment de Kubernetes

Si generamos un Pod, necesitaremos un sistema que vigile que funcione constantemente. Lo que nos va a permitir un deployment es verificar ese Pod y reiniciar automáticamente los containers que lo componen si finalizan. Esto nos va a permitir escalar de forma correcta los Pods que construyamos.

Os explico cómo generar un Deployment en Kubernetes y que se genere un Pod automáticamente. Generamos y comprobamos tanto que existe un deployment como un pod:

raulunzue@KBMASTER:~$ kubectl create deployment hello-world-deployment-elblogdenegu --image=gcr.io/google-samples/hello-app:2.0
deployment.apps/hello-world-deployment-elblogdenegu created
raulunzue@KBMASTER:~$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-world-deployment-elblogdenegu 1/1 1 1 5s
raulunzue@KBMASTER:~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-world-deployment-elblogdenegu-6dbbf956cf-q6879 1/1 Running 0 10s 10.69.2.10 kubernetes02

crear-containers-docker-sobre-kubernetes-7a

Eliminar Deployment en Kubernetes

Podemos eliminar un Deployment en Kubernetes de la siguiente forma:

kubectl delete deployment hello-world-deployment-elblogdenegu

crear-containers-docker-sobre-kubernetes-9

Ver eventos en el cluster de Kubernetes

Podemos revisar todo lo que pasa en el cluster a través del siguiente comando:

kubectl get events

crear-containers-docker-sobre-kubernetes-10

Crear Service en Kubernetes

De nada sirve tener una plataforma que sólo podamos ver desde la red interna, ya que no podremos trabajar con nuestros despliegues o aplicaciones. Para eso tenemos que tener claro otro concepto como son los Service.
Los cuales nos permiten exponer nuestras apps independientemente donde corran dentro del clúster de Kubernetes. Si revisamos qué services tenemos actualmente en el clúster, veremos que no existe ninguna app:

kubectl get services

crear-containers-docker-sobre-kubernetes-11

La idea es publicar la que hemos generado en el deployment, y lo haremos con el siguiente comando:

kubectl expose deployment hello-world-deployment-elblogdenegu --type=LoadBalancer --name=hello-world-service-elblogdenegu --port=8082

Volvemos a revisar los services y la IP del Cluster asociada al service. Si EXTERNAL-IP se queda en pending, hay que esperar unos minutos:

crear-containers-docker-sobre-kubernetes-16

Podemos extraer los datos del service de la siguiente forma:

kubectl describe services hello-world-service-elblogdenegu

crear-containers-docker-sobre-kubernetes-17

Comprobaríamos el acceso de la siguiente forma:
curl http://<external-ip>:<port>

Eliminar Service en Kubernetes

Para eliminar el service usáis el siguiente comando:

kubectl delete service hello-world-service-elblogdenegu

crear-containers-docker-sobre-kubernetes-14

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

Polaris-best-practice-buenas-practicas-kubernetes

Polaris: Buenas prácticas Kubernetes

Polaris: Buenas prácticas Kubernetes Cuando trabajas con clústeres de Kubernetes, es muy posible que te …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cinco × cinco =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu