Kubernetes se ha convertido en la plataforma líder para la orquestación y gestión de contenedores en el mundo de la infraestructura de aplicaciones. Mediante este blog, explicaré un recorrido de los conceptos más utilizados de Kubernetes, desde los más básicos hasta los casos de uso más complejos con ejemplos y comandos claves a utilizar.
Introducción a Kubernetes
Kubernetes, también conocido como K8s, es una plataforma de código abierto que automatiza la implementación, escalado y operación de aplicaciones en contenedores. Los contenedores son unidades que encapsulan una aplicación y todas sus dependencias. Kubernetes proporciona herramientas para administrar contenedores de manera eficiente, garantizando la alta disponibilidad y escalabilidad de aplicaciones.
Instalación y Configuración
La instalación de Kubernetes puede variar según la plataforma, pero existe algunas herramientas como ‘kubeadm’, ‘minikube’ o soluciones en la nube como son:
- Google Kubernetes Engine (GKE) ⇨ Nube de Google Cloud Platform (GCP).
- Elastic Kubernetes Services (EKS) ⇨ Nube de Amazon Web Service (AWS).
- Azure Kubernetes Services (AKS) ⇨ Nube de Azure (Azure).
Una vez instalado puedes configurar tus herramientas de línea de comandos para acceder al cluster.
Ejemplo de instalación usando la herramienta de ‘minikube’
💡 Nota: Antes de iniciar y ver cuáles son los diferentes componentes que se utilizan en Kubernetes hay que tener claro varias cosas, primero la indentación en los archivos Yaml, sin estos va a generar error, y segundo SIEMPRE, pero SIEMPRE un Yaml file está construido de cuatro (4) niveles indispensables para la creación de una archivo Yaml, y en este orden respectivamente, los cuales son:
- apiVersion
- kind
- metadata
- spec
Donde:
Habiendo explicado lo anterior podemos ver cada uno de los componentes que contiene esta herramienta de orquestación llamado kubernetes.
Pods y Contenedores
Un Pod es la unidad más básica de despliegue en Kubernetes. Puede contener uno o más contenedores que comparten recursos y red.
Veamos un ejemplo de como crear un Pod por medio de un archivo Yml.
💡Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘pod-example.yaml’, lo primero sería crear el pod, en segundo lugar sería listar los pods a ver si nuestro pod fue creado de manera satisfactoria y si queremos ahondar más acerca de nuestro Pod podemos utilizar la palabra reservada ‘describe’, los comandos serían en este orden y de esta forma:
Replicación y Escalado
Kubernetes permite replicar y escalar aplicaciones fácilmente por medio de un archivo Yaml o de forma declarativa (terminal), para mejorar la disponibilidad y el rendimiento.
Veamos un ejemplo de como crear un ReplicaSet por medio de un archivo Yml.
💡 Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘replicaset-example.yaml’, lo primero sería crear el replicaset, en segundo lugar sería listar los replicaset a ver si nuestra réplica fue creado de manera satisfactoria y si queremos escalar nuestra réplica si tener que entrar a nuestro archivo Yml serían en este orden y de esta forma:
Servicios y Networking
Los Servicios permiten comunicación entre diferentes conjuntos de Contenedores en Kubernetes. Un Service puede ser expuesto interna o externamente.
Veamos un ejemplo de cómo crear un Service por medio de un archivo Yml.
💡Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘service-example.yaml’, lo primero sería crear el service, en segundo lugar sería listar los services para constatar si fue creado de manera satisfactoria’, los comandos serían en este orden y de esta forma:
Configuración y Secretos
Los Secretos en Kubernetes permiten almacenar información sensible, como contraseñas, de manera segura.
Veamos un ejemplo de cómo crear un Secret por medio de un archivo Yml.
💡Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘secret-example.yaml’, lo primero sería crear el secret, en segundo lugar sería listar los secrets para constatar si fue creado de manera satisfactoria’, los comandos serían en este orden y de esta forma:
Monitoreo
La observabilidad es fundamental en Kubernetes, ya que ayuda a los equipos identificar problemas y gestionar de forma proactiva clusters de Kubernetes que. Se puede utilizar Herramientas como Prometheus.
Ejemplo de instalación usando la herramienta de ‘Prometheus’
Deployments
Un Deployment es un objeto que se puede representar una aplicación del cluster. Cuando se crea el Deployment, se puede especificar en el spec del Deployment cuantas réplicas de la aplicación se desea correr.
Veamos un ejemplo de cómo crear un Deployment por medio de un archivo Yml.
💡Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘deployment-example.yaml’, lo primero sería crear el deployment, en segundo lugar sería listar los secrets para constatar si fue creado de manera satisfactoria’, los comandos serían en este orden y de esta forma:
Actualizaciones y Rollbacks
Los Rolling Updates permiten actualizar aplicaciones de manera gradual para evitar interrupciones.
Ejemplo de actualización de un ‘Deployment’
Caso de uso Avanzado
Kubernetes se puede utilizar en diversos casos de uso, como despliegues multiclusters, almacenamiento persistente, ejecución de tareas batch, entre otros.
Veamos un ejemplo de cómo crear una TareaBatch por medio de un archivo Yml.
💡Nota: En el ejemplo anterior vemos un archivo Yaml que se llama ‘job-example.yaml’, lo primero sería crear el job, en segundo lugar sería listar los jobs para constatar si fue creado de manera satisfactoria’, los comandos serían en este orden y de esta forma:
Conclusión
Con esto hemos explorado una amplia gama de conceptos que se utilizan en Kubernetes desde los conceptos más básicos como la creación de un Pod hasta los más avanzados. Este es una herramienta muy poderosa que te permite orquestar aplicaciones de manera eficiente y escalable en entornos de contenedores.