Kubernetes es el software de código abierto más popular que automatiza los procesos de desarrollo de contenedores.
Según el estudio anual de la Fundación de Computación Nativa en la Nube (CNCF), el 96% de las organizaciones utilizan K8s o están considerando su uso. Si lo sigue de cerca, 5,8 millones de desarrolladores de todo el mundo utilizan Kubernetes, lo que supone el 31% de los desarrolladores backend de todo el planeta.
Se prefiere por su capacidad de aprovechar la tecnología mediante una mejor escalabilidad, disponibilidad y un tiempo de despliegue más corto. Mientras que muchos desarrolladores inician su trayectoria en los contenedores con Docker (una herramienta integral que se basa en la CLI para interactuar con los contenedores, de uno en uno), K8s le proporciona abstracciones de alto nivel para que defina las aplicaciones y su infraestructura mediante esquemas en los que pueda colaborar.
Si es usted nuevo en Kubernetes, este artículo está especialmente diseñado para ayudarle en sus pinitos introductorios y compartir ideas para que empiece. Aprenderá cómo K8s puede ayudarle como desarrollador a sobrealimentar sus productos digitales.
¿Qué es Kubernetes y por qué lo necesita?
Kubernetes es un motor (marco) de coordinación de código abierto utilizado en la automatización del despliegue, el escalado y la gestión de aplicaciones en contenedores; esto incluye el manejo de la previsibilidad y la disponibilidad.
En pocas palabras, pensemos en una aplicación que usted ha containerizado. Para dar servicio a los usuarios de su aplicación, necesita ejecutar varios contenedores. La preocupación surge cuando necesita gestionar estos contenedores. Los contenedores no tienen por qué estar necesariamente en la misma máquina, lo que complica las cosas. Entonces, ¿cuál es la solución a este problema?
Kubernetes acude a su rescate proporcionándole una forma eficaz de gestionar todos estos procesos sin problemas. Aunque puede asemejar K8s a un motor de contenedores como Docker, se trata de un orquestador de contenedores. Como desarrollador que empieza, no necesita preocuparse de cómo K8s realiza la orquestación. Probablemente no configurará un clúster K8s para su aplicación; más sobre esto en breve.
Sin embargo, interactuará con los clusters que configuran su equipo de infraestructura. Familiarizarse con los objetos con los que interactuará es crucial. Pero antes de hacerlo, necesitará una comprensión de alto nivel de su arquitectura para comprender lo que ocurre debajo de ella.
Características de Kubernetes
Kubernetes dispone de varias características con un amplio abanico de capacidades para ejecutar contenedores y otras infraestructuras asociadas. He aquí una lista:
- Despliegues, escalados y retrocesos automatizados - K8s robotiza la creación de su número especificado de réplicas, distribuyéndolas por el hardware apropiado (el más adecuado) y reprogramando los contenedores si un nodo está en tiempo de inactividad. Puede escalar instantáneamente sus réplicas en función de la demanda o de necesidades cambiantes como el uso de la CPU.
- Descubrimiento de servicios, estabilización de la carga y entrada en red - Kubernetes ofrece una solución de red única, que incluye el descubrimiento de servicios internos y la exposición de contenedores públicos.
- Aplicaciones con y sin estado - En sus inicios, K8s se centraba principalmente en los contenedores sin estado. A medida que la tecnología evoluciona en muchos frentes, ahora da cabida a objetos integrados que representan aplicaciones con estado. Ratificada, cualquier aplicación puede ejecutarse en Kubernetes.
- Regulación del almacenamientoya sea en un sistema de archivos local, en un recurso compartido de red o en la nube, Kubernetes proporciona (abstrae) almacenamiento persistente a las aplicaciones que se ejecutan en contenedores. Y la abstracción le permite definir los requisitos de almacenamiento con independencia de la infraestructura subyacente. Aunque esto va más allá del alcance de este artículo, funciona a través de principios como el volumen persistente (PV), la reclamación de volumen persistente (PVC), las clases de almacenamiento y los plugins de volumen.
- Estado declarativo - K8s utiliza archivos Yet Ain't Markup Language (YAML), denominados manifiestos de objetos, para especificar los estados deseados para su clúster. Los manifiestos dictan el aspecto de su clúster, incluyendo, entre otras configuraciones, las instancias de aplicación y las reglas de red deseadas. Cuando aplica manifiestos, K8s gestiona automáticamente todas las transiciones de estado: no tendrá que escribir los scripts para hacerlo.
- Múltiples entornos de trabajo - No está limitado a utilizar Kubernetes en la nube o en su estación de trabajo de desarrollador. Casi todas las distribuciones están disponibles para adaptarse a su caso de uso específico. Busque los principales proveedores de tecnología en la nube, como Amazon Web Services, Google Cloud y Microsoft Azure. Se dará cuenta de que todos ellos ofrecen servicios gestionados de Kubernetes, mientras que las distribuciones de nodo único como Minikube y K3s están disponibles para uso local.
- Súper extensividad - K8s es una colección de muchas funcionalidades. Por si fuera poco, puede acelerar sus capacidades con extensiones. Puede crear tipos de objetos, operadores y controladores personalizados para agilizar sus cargas de trabajo.
Arquitectura de Kubernetes
En su núcleo, la arquitectura de Kubernetes consta de un único nodo maestro y dos nodos trabajadores. El nodo maestro lleva la voz cantante en el clúster, mientras que los nodos trabajadores (esclavos) ejecutan las aplicaciones según decida el maestro.

He aquí un desglose más detallado.
El (los) nodo(s) maestro(s)
El nodo maestro dicta los estados del clúster y decide las acciones de cada nodo en particular. Se requieren varios procesos para configurar el nodo maestro.
- Servidor API
Todas las comunicaciones del clúster se basan aquí. Es la pasarela que permite a todos los componentes del clúster intercambiar información. Expone la API de Kubernetes. Aquí se desempeñan dos papeles principales. El primero es un punto de entrada que permite a los usuarios interactuar con el clúster. Por ejemplo, enviando solicitudes cuando se utiliza Kubectl. En segundo lugar, el gatekeeping para autenticar y validar las solicitudes. En este caso, sólo determinados usuarios pueden ejecutar peticiones. - Programador
El programador asigna aplicaciones u objetos de carga de trabajo Kubernetes al nodo trabajador. En este caso, el programador coloca los pods en los nodos en función de las necesidades de recursos. Cuando se habla de pods, se trata de una pequeña unidad de despliegue en Kubernetes. - Gestor de controladores
Esta unidad mantiene los clústeres como los fallos de los nodos para mantener el número correcto de pods. Detecta los cambios de estado del clúster, como la muerte de pods, e intenta restaurar el pod a su estado original. Por ejemplo, si un pod muere accidentalmente, el gestor controlador solicita al planificador que ratifique qué nodo hace girar un nuevo pod como reemplazo, y kubelet hace girar un nuevo pod. - etcd
También se conoce como el cerebro del clúster. Es un almacén de valores clave para la configuración del clúster. Esto significa que todos los cambios del clúster se realizan aquí. Puede hacer una copia de seguridad de un clúster guardando el almacén distribuido de valores clave. Sin embargo, tenga en cuenta que aquí sólo se almacenan los datos del estado del clúster, no los datos de las aplicaciones. Esta unidad sirve específicamente para guardar información sobre el estado del clúster y ponerla a disposición de los procesos precedentes, dándoles a conocer el clúster.
El nodo o nodos esclavos
Cada nodo esclavo se instala con tres procesos de nodo que permiten a los K8 interactuar con él y hacer girar por separado los pods dentro de cada nodo. Los procesos necesarios son
- Kubelet
Este es el servicio principal de Kubernetes que ejecuta la capa de ejecución de contenedores. Si se quita esta unidad, Kubernetes no es más que una API REST respaldada con un almacén de claves y valores. Por defecto, K8s ejecuta la aplicación del contenedor. Los contenedores están siempre aislados entre sí y del sistema anfitrión subyacente. Esto ha demostrado ser analítico para desligar la gestión de aplicaciones individuales entre sí y de la infraestructura física o virtual.
Aunque el control de admisión de la API puede rechazar pods o añadir restricciones adicionales, el kubelet es el ratificador final de qué pods se ejecutan en un nodo concreto, no los programadores ni los Daemonsets. En resumen, los kubelets interactúan con el nodo y el contenedor. También toma los archivos de configuración y pone en marcha los pods utilizando el tiempo de ejecución del contenedor. - Tiempo de ejecución del contenedor
Esta sección ejecuta contenedores. Por ejemplo, puede utilizar Docker, rkt, o conatinered un poco más sobre cómo funcionan los contenedores sección. - Kube-proxy
Esta unidad proporciona una capa de abstracción para los grupos de nodos pod bajo políticas comunes como en el caso del equilibrio de carga. Todos los nodos aplican Kube-proxy para proporcionar una dirección IP virtual a los clientes que acceden a vainas dinámicas. Esta estructura es la solución al equilibrio de carga manteniendo una sobrecarga de bajo rendimiento.
Cómo funciona la contenedorización
La contenedorización implica virtualizar todas las piezas necesarias de una aplicación de software en una sola unidad. Debajo de los contenedores hay una colección de bibliotecas, binarios y todas las configuraciones necesarias de la aplicación. Pero no incluyen los recursos del núcleo ni el hardware virtualizado.
En última instancia, ejecutan 'por encima' tiempos de ejecución de contenedores que perfilan los recursos. Dado que los contenedores sólo incluyen los componentes básicos y las dependencias de las aplicaciones, son ligeros y, por tanto, más rápidos, a diferencia de otras máquinas virtuales.
Lea también: Contenedores frente a máquinas virtuales: Explicación de las diferencias
Cómo instalar y configurar Kubernetes
He dedicado mucho tiempo a ser teórico; la sección en cascada será táctica e implicará algo de experiencia práctica con contenedores. Este tutorial cubre particularmente la instalación en el sistema operativo Windows.
Existen múltiples formas de realizar instalaciones cuando se utiliza Windows; se puede optar por la línea de comandos o por la interfaz gráfica de usuario. Sin embargo, debe asegurarse de que cumple las siguientes especificaciones requeridas.
Su hardware necesita un nodo maestro con al menos 2 GB de memoria y 700 MB para el nodo trabajador. En cuanto a los requisitos de software, Hype-v, Docker para escritorio, una dirección Mac única y un UUID de producto único para cada nodo. He aquí el paso a paso.
Instalación y configuración de Hyper-V
Hyper-V es el software de virtualización por defecto de Window. Esencialmente, es un VirtalBox con esteroides. Le permite gestionar máquinas virtuales tanto en la GUI de Microsoft como en la línea de comandos. Para habilitar Hyper-V, siga estos pasos.
- Abra el Panel de control.
- Haga clic en programas en el panel izquierdo.
- En la página de programas y características, haga clic en `Activar o desactivar las características de Windows.`
- Seleccione Hyper-V y las características del hipervisor para Windows.
- A continuación, seleccione Aceptar en este paso; su máquina debería reiniciarse para activar la nueva configuración.
Ocasionalmente, su PC puede reiniciarse varias veces para asegurarse de que todo está correctamente configurado. Puede verificar el éxito de la instalación tecleando el siguiente comando en Power Shell.
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
Confirme que en su pantalla aparece el estado "habilitado
“.
Instalación de Docker
Como ha aprendido, K8s es una herramienta de orquestación de contenedores construida sobre contenedores; en este caso, Docker es una buena opción. K8s se comunica con Docker y lo gestiona todo a nivel empresarial. Póngase en marcha descargando D ocker para Windows. Si se pregunta por qué es necesario utilizar Docker Desktop, es el preferido para simplificar el desarrollo, envío y ejecución de aplicaciones dockerizadas (en contenedores).
También es la forma más rápida de crear aplicaciones Docker en Windows utilizando Hyper-V y redes. Después de una instalación exitosa, Docker es siempre accesible en cualquier terminal mientras se esté ejecutando. Para obtener una guía detallada sobre la instalación, puede consultar la documentación oficial de Docker. Si encuentra algún problema como iconos ocultos después de la instalación, el problema puede resolverse reiniciando su máquina.
Instalación de Kubernetes
La interfaz gráfica de usuario de Docker le permite configurar los ajustes, instalar y habilitar Kubernetes. Para instalar K8s, siga estos pasos.
- Haga clic con el botón derecho en el icono de la bandeja de Docker y seleccione propiedades.
- Seleccione `Configuración` en el menú desplegable tras hacer clic en `Propiedades`.
- En el panel izquierdo, seleccione `Kubernetes` y haga clic en `Apply`.
A continuación, Docker instalará algunos paquetes y dependencias adicionales. El proceso tarda entre cinco y diez minutos, en función de su velocidad de Internet. Puede utilizar la aplicación Docker para comprobar que todo funciona correctamente.
Dado que las aplicaciones Kubernetes pueden desplegarse utilizando la CLI, es posible que tenga que instalar el panel de control K8s, ya que no está instalado por defecto. Instale el cuadro de mandos siguiendo estos pasos.
- Descargue la configuración YAML.
- Despliegue la aplicación utilizando este código:
.
Kubectl apply -f .\recomendado.yaml
. - Confirme que todo está bien configurado mediante: kubectl
.exe get -f .\recommended.yaml.txt
.
Para acceder al cuadro de mandos, ejecute el siguiente comando en Power Shell (no CMD)
- Ejecute el siguiente código
((kubectl -n kube-system describe secret default | select-string "token:") - split " ")[1]
- Copie el token generado y ejecute kubectl
proxy
.
- Copie el token generado y ejecute kubectl
- En su navegador, abra este enlace.
- Haga clic en `Token` y pegue aquí su token.
- Iniciar sesión.
Si ha llegado hasta aquí, bravo su pantalla debería estar poblada con el dashboard de K8s. Ahora puede gestionar sus aplicaciones sin hacer el trabajo duro usando el CLI.
Lea también: Cómo instalar Kubernetes en Ubuntu 18
Cómo crear y gestionar un clúster Kubernetes
Si ha seguido hasta aquí, debería haber instalado con éxito Kubernetes en su host. A continuación, siga estos pasos para crear y realizar una gestión sencilla en su clúster:
- Configurar larojo - Aquí, necesita configurar la red entre los nodos del clúster; permitir que se comuniquen entre sí.
- Configurela autenticación del clúster - Cree mecanismos de autenticación y autorización para el acceso al clúster.
- Configure los componentes maestros; implica el servidor API, el programador y el gestor de controladores.
- Unir los nodos trabajadores - Conecte los nodos trabajadores al clúster utilizando los archivos de configuración proporcionados por el proceso de configuración del clúster.
- Despliegue complementos - Puede instalar complementos para mejorar la funcionalidad del clúster.
- Gestione las cargas de trabajo - Ha llegado el momento de desplegar sus aplicaciones.
Aunque esto es sólo una visión general del proceso de creación del clúster, implica muchos pasos en los que intervienen varios comandos. Aquí tiene la guía de documentación oficial sobre cómo crear clústeres antes del despliegue. Debería servirle de guía.
Cómo desplegar su primera aplicación utilizando Kubernetes
El comando más común cuando se utiliza K8s es kubectl action resource
, que le permite realizar acciones específicas como crear o eliminar un recurso especificado.
Si está atascado, puede utilizar --help
después de un subcomando concreto para obtener información adicional.
Por ejemplo, Kubernetes get nodes -
-ayuda. Despliegue su primera aplicación K8s utilizando el comando kubectl create deployment Kubernetes-bootcamp -image=gcr.io/google-samples/Kubernetes-bootcamp:v1
.
Palabras finales
Esta guía ha sido un punto de entrada a la tecnología Kubernetes. Ha aprendido las ventajas, características y arquitectura de Kubernetes. Afortunadamente, puede que haya tenido que consultar algunos punteros (recursos externos) para ponerse en marcha; le ha explicado cómo funcionan las cosas bajo el capó.
Aunque pueda parecer abrumador comprender toda la pila tecnológica como principiante, este post ha sido una pauta suave para empezar con K8s. Necesitará un poco de práctica para adquirir confianza en el uso de esta tecnología, por lo que le remito a la documentación oficial de Kubernetes como referencia complementaria. Cuanta más práctica tenga, más rápido se convertirá en un experto en K8s.
A continuación, eche un vistazo a los tutoriales de Kubernetes para principiantes para dominarlos.