¿Qué es Knative?

Fotografía tomada en la rueda de Falkirk, Escocia.

¿Qué es Knative?

Knative permite que las cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes. Hace que construir y orquestar 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 utilidades que hacen que la creación, el despliegue y la gestión de aplicaciones en contenedores dentro de Kubernetes sean una experiencia más sencilla y "nativa de Kubernetes" (de ahí el nombre, "K" de "Kubernetes" + "nativo").

Al igual que Kubernetes, Knative es un software de código abierto. Google lo desarrolló inicialmente en colaboración con IBM®, Pivotal, Red Hat®, SAP y casi otras 50 empresas. Hoy en día, la Cloud Native Computing Foundation (CNCF) alberga el proyecto de código abierto Knative.

Vista aérea de una 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 el despliegue, 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 que los componentes de la aplicación compartan los recursos de una sola instancia de un sistema operativo, de la misma manera que las máquinas virtuales (VM) permiten que las aplicaciones compartan los recursos de una sola computadora física. Más pequeños y más eficientes en recursos que las VM y más adecuados para los ciclos de lanzamiento incrementales de las metodologías de desarrollo ágil y DevOps, los contenedores se han convertido en las unidades informáticas de facto de las aplicaciones modernas nativas de la nube. Las empresas que utilizan contenedores informan otros beneficios, incluida 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, monitoreo de estado y más, hacen que esa proliferación sea mucho más fácil de gestionar. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o creen plantillas para muchas tareas repetitivas, como extraer el código fuente de la aplicación de los repositorios, crear y aprovisionar una imagen de contenedor alrededor del código y configurar conexiones de red fuera de Kubernetes con diferentes herramientas. La incorporación de contenedores gestionados por Kubernetes en un proceso automatizado de integración continua/entrega continua (CI/DC) requiere herramientas especiales y programación personalizada.

Knative elimina esta complejidad con herramientas que automatizan estas tareas desde 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: cre el contenedor y realiza 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.

Academia de IA

Cómo lograr la preparación para la IA con la nube híbrida

Dirigida por los principales líderes de opinión de IBM, el plan de estudios está diseñado para ayudar a los líderes empresariales a obtener 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, ya que escalan de forma transparente en función de las solicitudes y se reducen a cero cuando se dejan de realizar;

  • descarga todas las tareas de gestión de infraestructura (escalado, programación, aplicación de parches, aprovisionamiento y más) al proveedor de 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 la nube específico. Knative permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier clúster de Kubernetes, ya sea que el contenedor esté construido alrededor de una función sin servidor u otro código de aplicación (por ejemplo, microservicios) al abstraer el código y manejar el enrutamiento de la red, los activadores de eventos y el autoescalado.

Cómo funciona Knative: componentes

Knative se encuentra en Kubernetes y agrega tres componentes principales o primarios: 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, que incluyen:

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

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

Servicio

El componente Serving despliega y ejecuta contenedores como servicios Knative escalables. El servicio 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 creó una nueva versión del servicio, pero desea desplegarla en un subconjunto de usuarios antes de migrar a todos los usuarios. El enrutamiento inteligente de servicios le permite enrutar un porcentaje de las solicitudes de los usuarios al nuevo servicio y el resto a una versión anterior. A medida que tenga más confianza en el nuevo servicio, podrá dirigir más tráfico a él.

  • Autoescalado. Knative puede escalar los servicios a miles de instancias; también puede reducirlas a cero, es decir, ninguna instancia del 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 de Kubernetes. Istio, una malla de servicios de código abierto para Kubernetes, también proporciona autenticación para solicitudes de servicio, cifrado automático de 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 los 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 la funcionalidad. Knative también maneja canales, que son colas de eventos entre los que los desarrolladores pueden elegir, y el bus, una plataforma de mensajería que entrega eventos a contenedores. También permite a los desarrolladores configurar feeds, 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. Knative Eventing crea automáticamente la conexión con el productor de eventos y enruta los eventos generados. No es necesario saber cómo hacerlo mediante programación: Knative hace todo el trabajo.

Casos de uso nativos

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

Optimizar Kubernetes. Al eliminar 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 de Kubernetes es un candidato ideal para Knative.

Acelerar el camino hacia la tecnología sin servidor. Puede ser desalentador configurar y administrar manualmente entornos sin servidor. Knative permite a las organizaciones configurar rápidamente cargas de trabajo sin servidor. En lo que respecta a los desarrolladores, solo están creando un contenedor: es Knative el que lo ejecuta como una función sin servidor detrás de escena.

Soporte de ciclos de vida ágil y DevOps. Al permitir a los desarrolladores crear nuevos contenedores y versiones de contenedores más rápido, Knative facilita el despliegue 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 pipelines de CI/CD automatizadas sin requerir software especial o programación personalizada.

Hacer más fluidos los despliegues de nuevas características. El lanzamiento de nuevas versiones a los clientes puede exponer problemas de software que podrían afectar los procesos comerciales. 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 resuelven problemas o regresan rápidamente a versiones anteriores si es necesario.

Mantener a los desarrolladores centrados en la programación y la innovación. DevOps podría facultar a los desarrolladores para gestionar 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 las colas del bus de mensajes para activar eventos o gestionar la escalabilidad de los contenedores. Knative permite a los desarrolladores dedicar más tiempo a 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.

Conozca 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 y despliegue rápido.

Explorar contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.

Servicios 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 todos los entornos con flexibilidad, seguridad y eficiencia mediante el uso de la plataforma integral de contenedores de IBM.

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