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

Compartir por WhatsApp

conceptos-basicos-sobre-kubernetes-3

Conceptos básicos sobre Kubernetes

Conceptos básicos sobre Kubernetes

Kubernetes o k8s o kube es un orquestador de Containers como ya hemos hablado otras veces de él. ¿Eso qué significa? Es una plataforma de automatización de containers, que permite simplificar la gestión de clústeres de grupos de hosts que ejecutan containers.

Fue diseñado por ingenieros de Google, gracias a que Google ejecuta toda su plataforma sobre Containers y necesitaban una evolución para ello. A este proyecto se unieron otras grandes empresas, lo que ha hecho que su evolución haya sido meteórica como la referencia en orquestación de Containers.

¿Por qué utilizar Kubernetes?

Cuando colocas una infraestructura de Containers en Producción necesitas unir varios de ellos entre sí. Kubernetes facilita esto, ya que es capaz de integrar tanto el Networking, el Almacenamiento, la Seguridad y otros servicios, facilitando sobre manera la gestión en Pods. Facilita la actualización e implementación de aplicaciones. Se asegura que las aplicaciones se ejecuten como se diseñaron, haciendo que la plataforma sea segura. A su vez comprueba el estado de las mismas, automatizando acciones sobre ellas (escalado, reinicio, replicación…)

Hay que decir que el proyecto Kubernetes no hace todo esto por si solo, necesita apoyarse de otros proyectos como OpenvSwitch (Networking), LDAP (Seguridad), Ansible (Automatización)…

conceptos-basicos-sobre-kubernetes-1

Términos en Kubernetes

Aunque vamos a detallar varios de ellos en un apartado propio os dejo los términos que os vais a encontrar:

  • Master: el Master es la máquina que gestiona los nodos de Kubernetes, asignando tareas a cada nodo.
  • Nodo: un Nodo es una máquina que realiza las tareas que le indica el Master.
  • Pod: un grupo de uno o más contenedores implementados en un nodo único. Todos los contenedores de un pod comparten la dirección IP, la IPC Socket, el nombre del host y otros recursos. Los pods abstraen la red y el almacenamiento del contenedor subyacente. Esto le permite mover los contenedores por el clúster con mayor facilidad.
  • Controlador de replicación: controla cuántas copias idénticas de un pod deben estar ejecutándose en algún lugar del clúster.
  • Servicio: separa las definiciones de tareas de los pods. Los proxies de servicios de Kubernetes envían automáticamente las solicitudes de servicio al pod correspondiente, sin importar adónde se traslada en el clúster, o incluso si está siendo reemplazado.
  • Kubelet: es un servicio que se ejecuta en cada nodo y revisa si los containers están iniciados y ejecutándose.
  • kubectl: herramienta para la configuración de la línea de comandos de Kubernetes.

conceptos-basicos-sobre-kubernetes-2

Pods en Kubernetes

La unidad más pequeña de Kubernetes son los Pods, con los que podemos correr Containers. Un pod representa un conjunto de contenedores que comparten almacenamiento y una única IP. Los pods son efímeros, cuando se destruyen se pierde toda la información que contenía. Si queremos desarrollar aplicaciones persistentes tenemos que utilizar volúmenes.

Ejemplo de Pod

Un ejemplo de un Pod, sería una aplicación WordPress con una base de datos MySQL. Para implementarlos correctamente, lo haríamos en dos pods diferenciados, uno para cada servicio. Para ello generaríamos dos ficheros YAML, uno para WordPress y otro para MySQL.

Pod para WordPress (wordpress.yaml):

Pod para MySQL (mariadb.yaml):

Lanzamos la creación de los Pods:

ReplicaSet en Kubernetes

ReplicaSet es una función de Kubernetes que asegura que siempre se ejecute un número de réplicas de un pod determinado. Nos aseguran que nuestros pods estén siempre disponibles. Nos proporciona las siguientes características:

  • Servicio siempre disponible
  • Tolerancia a errores
  • Escalabilidad totalmente dinámica

conceptos-basicos-sobre-kubernetes-2

Deployment en Kubernetes

Deployment es la unidad de más alto nivel que podemos gestionar en Kubernetes. Nos permite definir diferentes funciones:

  • Controlar el número de réplicas
  • Pods escalables
  • Actualizaciones
  • Despliegues automatizados
  • Vuelta a atrás o Rollback a versiones anteriores

conceptos-basicos-sobre-kubernetes-3

Services en Kubernetes

Los servicios o services en Kubernetes nos permiten acceder a nuestras aplicaciones.

  • Un servicio es una abstracción que define un conjunto de pods que implementan un micro-servicio
  • Nos ofrecen una dirección IP virtual (CLUSTERIP) y un nombre que identifica al conjunto de pods que representan
  • La conexión al servicio se puede realizar desde otros pods o desde el exterior

Los servicios normalmente se implementan a través de iptables. Es el componente kube-proxy el que se comunica con la API para comprobar si se han creado nuevos servicios.

Cuando se crea un nuevo servicio, se le asigna una nueva ip interna virtual (CLUSTERIP) que permite conexiones desde otros pods dentro del cluster. Además podemos habilitar el acceso desde el exterior, se abre un puerto aleatorio que permite que accediendo a la IP del cluster y a ese puerto se acceda al conjunto de pods. Si tenemos más de un pod el acceso se hará siguiendo una política round-robin.

Tipos de Services en Kubernetes

  • ClusterIP: Es el tipo de servicio predeterminado el cual expone una IP pero que sólo es accesible dentro del propio clúster
  • NodePort: En cada ClusterIP se enruta un puerto estático al que se puede acceder desde el exterior.
  • LoadBalancer: Expone un servicio externamente utilizando el balanceador de carga de un proveedor de la nube. Los servicios NodePort y ClusterIP, a los que se dirigirá el balanceador de carga, se crean automáticamente.

conceptos-basicos-sobre-kubernetes-4

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

¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

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

Compruebe también

terraform-crear-contenedores-lxc-en-proxmox-3

Terraform: Crear contenedores LXC en Proxmox

Terraform: Crear contenedores LXC en Proxmox Hoy vamos a explicar como automatizar despliegues con Terraform …

2 comentarios

  1. Gran post Raúl, me ha quedado muy claro que son los kubernetes, una tecnología que apenas conocía.
    Saludos y buen trabajo compañero!

Deja una respuesta

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

dos × 1 =

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