¿Qué es Knative?

Foto tomada en Falkirk Wheel, Escocia

¿Qué es Knative?

Knative permite que las cargas de trabajo sin servidor se ejecuten en los clústeres de Kubernetes. Hace que crear y organizar contenedores con Kubernetes sea más rápido y fácil.

Knative (pronunciado Kay-NAY-tive) es una extensión de la plataforma de orquestación de contenedores Kubernetes. Proporciona herramientas y servicios que hacen que la creación, implementación y gestión de aplicaciones en contenedores dentro de Kubernetes sea una experiencia más sencilla y más "nativa a Kubernetes" (de ahí el nombre, "K" por "Kubernetes" + "native").

Al igual que Kubernetes, Knative es un software de código abierto. Google la desarrolló inicialmente en colaboración con IBM, Pivotal, Red Hat, SAP y casi 50 empresas más. En la actualidad, la Cloud Native Computing Foundation (CNCF) organiza el proyecto nativo de la nube de código abierto de Knative.

Vista aérea de autopista

Mantenga su cabeza en la nube

Reciba el boletín semanal Think para obtener orientación de expertos sobre cómo optimizar la configuración multinube en la era de la IA.

¿Por qué Kubernetes necesita Knative?

Kubernetes automatiza y programa la implementación, la gestión y el escalado de contenedores, componentes de aplicaciones ligeros y ejecutables que combinan el código fuente con todas las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar el código en cualquier entorno.

Los contenedores permiten a los componentes de las aplicaciones compartir los recursos de una única instancia de un sistema operativo, de la misma manera que las máquinas virtuales (VM) permiten a las aplicaciones compartir los recursos de un único ordenador físico. Más pequeños y más eficientes en Recursos que las máquinas virtuales y más adecuados para los ciclos de lanzamiento incrementales de las metodologías de desarrollo ágil y DevOps de aplicaciones, los contenedores se han convertido en las unidades de cómputo de facto de las aplicaciones nativas de la nube. Las empresas que utilizan contenedores informan de otros beneficios, como la mejora de la calidad de las aplicaciones, mayores niveles de innovación y más:

A medida que el desarrollo nativo de la nube se vuelve más popular y los contenedores proliferan en una organización, las capacidades de orquestación de contenedores de Kubernetes, que incluyen programación, equilibrio de carga, monitorización de salud y más, hacen que esa proliferación sea mucho más fácil de administrar. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o creen plantillas de muchas tareas repetitivas, como extraer el código fuente de la aplicación de los repositorios, crear y aprovisionar una imagen de contenedor en torno al código y configurar conexiones de red fuera de Kubernetes utilizando diferentes herramientas. La incorporación de contenedores gestionados por Kubernetes en una canalización automatizada de integración continua/entrega continua (CI/DC) requiere herramientas especiales y codificación personalizada.

Knative elimina esta complejidad con herramientas que automatizan estas tareas desde dentro de Kubernetes. Un desarrollador puede definir el contenido y la configuración del contenedor en un único archivo de manifiesto YAML, y Knative hace el resto, creando el contenedor y realizando la programación de red para configurar una ruta, ingreso, equilibrio de carga y más. Knative también ofrece una interfaz de línea de comandos, Knative CLI, que permite a los desarrolladores acceder a las características de Knative sin editar archivos YAML.

AI Academy

Cómo prepararse para la IA con la nube híbrida

El plan de estudios, dirigido por los principales líderes de pensamiento de IBM, está diseñado para ayudar a los líderes empresariales a adquirir los conocimientos necesarios para priorizar las inversiones en IA que pueden impulsar el crecimiento.

Hacer que los contenedores no tengan servidor

La computación sin servidor es un modelo de ejecución nativo de la nube que hace que las aplicaciones sean más fáciles de desarrollar y más rentables. El modelo de computación sin servidor 

  • proporciona recursos informáticos bajo demanda, se escala de forma transparente en función de las solicitudes y se amplía a cero cuando ya no se realizan solicitudes;

  • descarga todas las tareas de gestión de la infraestructura (escalado, programación, aplicación de parches, aprovisionamiento y más) al proveedor de servicios en la nube, lo que permite a los desarrolladores centrar su tiempo y esfuerzo en el desarrollo y la innovación; y

  • permite a los clientes de la nube pagar solo por los recursos utilizados; nunca pagan por la capacidad inactiva.

Por sí solo, Kubernetes no puede ejecutar aplicaciones sin servidor sin un software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico. Knative permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier clúster de Kubernetes, tanto si el contenedor se basa en una función sin servidor como en otro código de aplicación (por ejemplo, microservicios), al abstraer el código y gestionar el enrutamiento de la red, los activadores de eventos y el autoescalado.

Cómo funciona Knative: componentes de Knative

Knative está basado en Kubernetes y añade tres componentes principales o principales: Build, Serving y Eventing.

Build

El componente Knative Build automatiza la conversión del código fuente en un contenedor. Este proceso suele implicar varios pasos, entre ellos:

  • Extraer código fuente de un repositorio de código, como GitHub
  • Instalar las dependencias subyacentes, como las variables de entorno y las bibliotecas de software, que el código necesita para ejecutarse
  • Crear imágenes de contenedores
  • Poner las imágenes de los contenedores en un registro donde Kubernetes y otros desarrolladores puedan encontrarlas.

Knative utiliza las API de Kubernetes y otras herramientas para su proceso de Build. Un desarrollador puede crear un único manifiesto (normalmente un archivo YAML) que especifique todas las variables (la ubicación del código fuente, las dependencias necesarias y más) y Knative utiliza el manifiesto para automatizar la creación del contenedor.

Serving

El componente Serving implementa y ejecuta contenedores como servicios Knative escalables. Serving proporciona las siguientes capacidades esenciales:

  • La configuración define y mantiene el estado de un servicio. También proporciona gestión de versiones: cada modificación de la configuración crea una nueva versión del servicio y se guardan las versiones anteriores.

  • El enrutamiento inteligente de servicios permite a los desarrolladores enrutar el tráfico a diferentes versiones del servicio. Supongamos que ha creado una nueva versión del servicio, pero desea implementarla en un subconjunto de usuarios antes de migrar a todos los usuarios. El enrutamiento inteligente de servicios le permite dirigir un porcentaje de las peticiones de los usuarios al nuevo servicio y el resto a una versión anterior; a medida que vaya confiando en el nuevo servicio, podrá dirigirle más tráfico.

  • Autoescalado. Knative puede escalar los servicios a miles de instancias; también puede reducirlos a cero, es decir, sin instancias de contenedor, lo cual es crítico para admitir aplicaciones sin servidor.

Knative Serving toma prestado el enrutamiento inteligente de servicios de Istio, otra aplicación del ecosistema Kubernetes. Istio, una malla de servicios de código abierto para Kubernetes, también proporciona autenticación para solicitudes de servicio, cifrado automático del tráfico para una comunicación segura entre servicios, métricas detalladas sobre microservicios y operaciones de funciones sin servidor y otras herramientas para que desarrolladores y administradores optimicen la infraestructura. 

Eventing

El componente Eventing de Knative  permite que diferentes eventos activen sus servicios y funciones basados en contenedores. Knative pone en cola y entrega esos eventos a los contenedores adecuados, por lo que no es necesario escribir scripts ni implementar middleware para que funcione. Knative también gestiona canales, que son colas de eventos que los desarrolladores pueden elegir, y el bus, una plataforma de mensajería que entrega eventos a los contenedores. También permite a los desarrolladores configurar fuentes, que conectan un evento a una acción para que la realicen sus contenedores.

Las fuentes de eventos de Knative facilitan a los desarrolladores la creación de conexiones con productores de eventos de terceros. Los eventos de Knative crean automáticamente la conexión con el productor de eventos y enrutan los eventos generados. No hay necesidad de averiguar cómo hacerlo mediante programación: Knative hace todo el trabajo.

Casos de uso de Knative

En resumen, Knative admite varios casos de uso para los usuarios de Kubernetes que quieren simplificar el desarrollo de aplicaciones en contenedores o llevar el uso de los contenedores al siguiente nivel.

Racionalización de Kubernetes. Al eliminar las tareas repetitivas de compilación y configuración, Knative hace que los desarrolladores que trabajan con Kubernetes sean más productivos. Cualquier equipo de desarrollo que tenga dificultades para gestionar un número creciente de clústeres Kubernetes es un candidato ideal para Knative.

Acelerar la transición hacia la tecnología sin servidor. Configurar y gestionar manualmente entornos sin servidor puede resultar desalentador. Knative permite a las organizaciones configurar cargas de trabajo sin servidor rápidamente. En lo que respecta a los desarrolladores, solo están construyendo un contenedor: es Knative quien lo ejecuta como una función sin servidor entre bastidores.

Soporte de los ciclos de vida ágiles y DevOps. Al permitir a los desarrolladores crear nuevos contenedores y versiones de contenedores más rápidamente, Knative facilita la implementación de aplicaciones en contenedores en pasos pequeños, rápidos e iterativos como parte de un flujo de trabajo ágil o DevOps. Los servicios Knative se integran fácilmente en canalizaciones automatizadas de CI/CD sin necesidad de software especial ni programación personalizada.

Suavizar la implementación de nuevas características. La implementación de nuevas versiones para los clientes puede exponer problemas de software que podrían afectar a los procesos empresariales. La configuración y el enrutamiento de Knative permiten a los desarrolladores exponer nuevas revisiones de contenedores a un subconjunto de la base de usuarios. Luego, aumentan gradualmente esa audiencia con el tiempo a medida que solucionan problemas o vuelven rápidamente a versiones anteriores si es necesario.

Mantener a los desarrolladores centrados en la codificación y la innovación. DevOps podría permitir a los desarrolladores administrar sus propios entornos. Pero al fin y al cabo, los desarrolladores quieren centrarse en crear software sin errores y nuevas características innovadoras, no en configurar colas de bus de mensajes para activar eventos o gestionar la escalabilidad de contenedores. Knative permite a los desarrolladores dedicar más tiempo a hacer lo que mejor saben hacer.

Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Descubra Red Hat OpenShift
Soluciones de contenedores

Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto e implementación rápida.

Explore los contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.

Servicio en la nube
Dé el siguiente paso

Modernice su infraestructura con las soluciones de contenedores de IBM. Ejecute, escale y gestione cargas de trabajo en contenedores en distintos entornos con flexibilidad, seguridad y eficiencia mediante la plataforma integral de contenedores de IBM.

Explore las soluciones de contenedores Cree su cuenta gratuita de IBM Cloud