KUBERNETES PARA PRINCIPIANTES (Explicado Facil, desde Cero)
¿Qué es Kubernetes y para qué sirve?
Introducción a Kubernetes
- Alexia, la presentadora, introduce el tema de Kubernetes y su relevancia en el mundo actual de la tecnología.
- Se mencionan términos relacionados como OpenShift, imágenes de contenedor, pods y escalado automático, preparando al espectador para una explicación más profunda.
Contexto del uso de contenedores
- Se aclara que el mundo de los contenedores y orquestadores es vasto; este video es solo un punto de partida.
- Se plantea un escenario donde una empresa pequeña utiliza una máquina virtual para alojar su sitio web y base de datos.
Problemas con las máquinas virtuales
- Las máquinas virtuales emulan sistemas operativos completos, lo que puede llevar a recursos ociosos y problemas de seguridad.
- La dependencia de versiones específicas de software puede complicar las actualizaciones del sistema operativo sin afectar la aplicación.
Ventajas del uso de contenedores
- Los contenedores (como Docker) no reemplazan completamente a las máquinas virtuales; ofrecen aislamiento entre aplicaciones y el sistema operativo.
- Al usar contenedores, se pueden actualizar sistemas operativos sin afectar a las aplicaciones contenidas dentro.
Introducción a Kubernetes
- Kubernetes permite gestionar múltiples contenedores eficientemente en nodos diferentes, optimizando el uso de recursos.
- Si un nodo necesita mantenimiento o actualización, otros nodos pueden seguir funcionando para garantizar la disponibilidad continua.
Importancia del uptime
- Se discute la necesidad crítica del uptime en aplicaciones productivas; se menciona SLA (Service Level Agreement).
- Aunque se busca minimizar el downtime programado, siempre habrá necesidad de mantenimiento regular.
Orquestación con Kubernetes
- Con Kubernetes, se pueden distribuir cargas entre varios nodos mientras se realizan actualizaciones sin interrumpir el servicio.
¿Cómo funciona Kubernetes y sus ventajas?
Ventajas de Kubernetes en la infraestructura
- Kubernetes permite actualizar toda la infraestructura sin interrumpir el servicio a los usuarios, facilitando un rollout que regenera el pod con la nueva versión de la aplicación.
- Ofrece políticas de escalamiento horizontal como pod autoscaling y node autoscaling, ajustando automáticamente la cantidad de pods o nodos según la demanda.
Consideraciones sobre infraestructuras
- En configuraciones on-premise, el node autoscaling puede no ser relevante; es más útil en servicios de infraestructura como servicio (IaaS).
- Al utilizar Kubernetes en la nube, se pueden escalar nodos automáticamente según las necesidades, lo que implica costos variables dependiendo del uso.
Métodos de escalamiento
- Además del escalamiento horizontal, existe el escalamiento vertical que consiste en aumentar los recursos (RAM y CPU) de los nodos existentes en lugar de agregar nuevos nodos.
Anatomía del clúster de Kubernetes
Estructura básica del clúster
- Un clúster está compuesto por nodos; cada nodo contiene pods y dentro de cada pod hay contenedores donde se ejecutan las aplicaciones.
- Existen diferentes configuraciones para un clúster: desde un nodo Master con varios workers hasta configuraciones más pequeñas como k3s.
Componentes del nodo Master
- El control plane incluye componentes clave: apiserver (interacción con el clúster), scheduler (gestiona órdenes sobre los pods), controller (mantiene el estado deseado), y etcd (base de datos para almacenar datos).
Funciones del nodo Worker
¿Cómo funciona Kubernetes y sus componentes?
Introducción a los Pods y su Funcionamiento
- Se menciona que cada pod en Kubernetes tiene una IP asignada, lo que permite la comunicación entre los pods. El agente Cubl escucha al nodo maestro para crear pods y reportar su estado.
- El comando
kubectles fundamental para interactuar con Kubernetes. Un pod es la unidad más pequeña dentro de Kubernetes, generalmente conteniendo un solo contenedor.
- La diferencia clave entre un pod y un contenedor es que el pod tiene una IP asignada, mientras que el contenedor no. Kubernetes solo puede lanzar pods, no contenedores directamente.
Características de los Pods
- Los pods son efímeros; van y vienen como las células del cuerpo humano. Reiniciar un pod implica eliminarlo y crear uno nuevo para mantener la cantidad deseada de pods activos.
- Para asegurar que siempre haya una cantidad específica de pods funcionando, se utiliza un objeto llamado ReplicaSet (RCA set), que reinicia automáticamente los pods fallidos.
Casos de Uso y Limitaciones de Kubernetes
- Antes de implementar un clúster en Kubernetes, se discuten situaciones donde usarlo podría ser excesivo debido a su complejidad y consumo de recursos.
- Para aplicaciones estáticas o simples, como las utilizadas por el presentador, puede ser más eficiente utilizar contenedores o máquinas virtuales sin necesidad de orquestación compleja.
Alternativas a Kubernetes
- Se menciona OpenShift como una alternativa a Kubernetes con mayor seguridad y soporte empresarial. Sin embargo, ambas plataformas funcionan sobre la misma base tecnológica: Kubernetes.
- Empresas grandes como Google, Tesla y Netflix utilizan Kubernetes para aplicaciones críticas debido a su capacidad para manejar cargas pesadas eficientemente.
Conclusiones sobre el Uso Práctico
- Aunque aprender sobre Kubernetes es valioso, no todas las aplicaciones requieren su uso; algunas pueden funcionar adecuadamente en entornos más simples como Docker Engine.
- Se enfatiza la importancia de escalar aplicaciones según demanda utilizando herramientas adecuadas; esto hace que Kubernetes sea útil en ciertos contextos pero no necesariamente en todos.
Instalación Rápida de Kubernetes
Configuración y Uso de Kubernetes con Helm
Configuración Inicial de Kubernetes
- Se utiliza el comando
ctl config viewpara configurar la salida en un archivo llamadoconfigen el directorio home, permitiendo personalizar la configuración de K3s.
- Se establece una variable de entorno
export kubeconfig=config k3s, lo que permite a los comandos de Kubernetes acceder a esta configuración.
- Al ejecutar
kubectl get nodes, se verifica que el nodo está correctamente configurado y se identifica como "Master".
Introducción a Helm
- Se menciona la importancia de Helm como herramienta complementaria al trabajar con Kubernetes, facilitando la gestión de aplicaciones.
- El proceso para descargar Helm incluye acceder a una dirección específica y descomprimir el archivo descargado utilizando
tar.
Instalación y Configuración de Helm
- Después de descomprimir, se realiza un cambio en los permisos del binario usando
chmodpara permitir su ejecución por todos los usuarios.
- Se ejecuta el comando
sudo mv helm /usr/local/bin/para mover el binario a un directorio accesible globalmente.
Funcionalidades Clave de Helm
- Helm es fundamental para instalar charts, agregar repositorios y desplegar aplicaciones dentro del entorno Kubernetes.