¿Qué es Knative?
Knative permite que las cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes y hace que la creación y organización de contenedores con Kubernetes sea más rápida y sencilla.
fondo negro y azul
¿Qué es Knative?

Knative (pronunciado Kay-NAY-tive) es una extensión de la plataforma Kubernetes de orquestación de contenedores que permite que cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes y proporciona herramientas y utilidades que facilitan la creación, implementación y gestión de aplicaciones en contenedores dentro de Kubernetes. Una experiencia más simple y más 'nativa de Kubernetes' (de ahí el nombre - 'K' de 'Kubernetes' + native).

Al igual que Kubernetes, Knative es un software de código abierto. Fue desarrollado originalmente por Google en colaboración con IBM, Pivotal, Red Hat, SAP y cerca de 50 empresas más. Hoy, el proyecto de código abierto Knative está alojado por la Cloud Native Computing Foundation (CNCF). 

Por qué Kubernetes necesita Knative

Kubernetes automatiza y programa la implementación, gestión y escalamiento de contenedores: componentes de aplicaciones ejecutables y livianos 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 máquinas virtuales (VM) permiten que las aplicaciones compartan los recursos de una sola computadora física. Más pequeños, más eficientes en recursos que las VM y mejor adaptados a los ciclos de lanzamiento incrementales de Agile y las metodologías de desarrollo de DevOps, los contenedores se han convertido en las unidades de computación de facto de las aplicaciones modernas nativas en la nube. Las empresas que utilizan contenedores informan otros beneficios, incluyendo la mejora de la calidad de las aplicaciones, mayores niveles de innovación, y mucho más:

Descargue el informe completo: Contenedores en la empresa  (PDF, 1.4 MB)

A medida que el desarrollo nativo de la nube gana popularidad y el uso de contenedores se extiende entre las empresas, las funciones de orquestación de contenedores de Kubernetes, como la programación, el equilibrio de carga o la supervisión del estado, facilitan la gestión de esta proliferación. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o preparen plantillas de muchas tareas repetitivas, como extraer el código fuente de la aplicación desde repositorios, crear y suministrar una imagen de contenedores alrededor del código o configurar conexiones de red, todo ello fuera de Kubernetes, utilizando diferentes herramientas. Además, la incorporación de contenedores gestionados por Kubernetes en una línea de trabajo de integración continua/entrega continua automatizada 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 se encarga del resto: crea el contenedor y realiza la programación de la red para configurar una ruta, el ingreso o el equilibrio de carga, entre otros elementos (Knative también ofrece una interfaz de línea de mandatos, la CLI de Knative, que permite a los desarrolladores acceder a las características de Knative sin editar archivos YAML).

Cómo hacer contenedores sin servidor

La computación sin servidor es un modelo de ejecución nativo de la nube que facilita aún más el desarrollo de aplicaciones y habilita una ejecución más rentable. El modelo informático sin servidor: 

  • suministra recursos informáticos bajo demanda, escalando de forma transparente en función de las solicitudes, y escalando a cero cuando ya no se realizan solicitudes,

  • descarga todas las tareas de gestión de la infraestructura (escalamiento, programación, parcheo, suministro, etc.) al proveedor de la nube, lo que permite a los desarrolladores centrar su tiempo y esfuerzos en el desarrollo y la innovación, y

  • permite a los clientes de la nube pagar solo por los recursos que se utilizan: nunca pagan por la capacidad inactiva.

Por sí mismo, Kubernetes no puedo ejecutar aplicaciones sin servidor sin 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 está construido alrededor de una función sin servidor como otro código de aplicación (p. ej., microservicios), abstrayendo el código y el manejo del enrutamiento de la red, los activadores de eventos y el escalamiento automático.

Cómo funciona Knative: componentes de Knative

Knative reside sobre Kubernetes y añade tres componentes principales, o  primitivos: Build, Serving y Eventing. 

Build


El componente Build de Knative automatiza el proceso de convertir el código fuente en un contenedor. Este proceso generalmente implica varios pasos, que incluyen:

  • Extraer código fuente desde 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 su ejecución
  • Crear imágenes del contenedor
  • Colocar imágenes del contenedor en un registro donde Kubernetes (y otros desarrolladores) puedan encontrarlas.

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

Serving


El componente Serving implementa y ejecuta contenedores como servicios escalables de Knative. Serving proporciona las siguientes funcionalidades destacadas:

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

  • El enrutamiento de servicios inteligentes permite a los desarrolladores enrutar el tráfico a diferentes versiones del servicio. Supongamos que ha creado una nueva versión de un servicio, pero quiere implementarla en un subconjunto de usuarios antes de migrar 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 de la solicitud a una versión anterior. A medida que tenga más confianza en el nuevo servicio, podrá enrutar más tráfico hacia él.

  • Escalamiento automático. Knative puede escalar los servicios a miles de instancias y también puede reducirlos a cero, es decir, que no haya ninguna instancia del contenedor, lo cual es fundamental para la compatibilidad con aplicaciones sin servidor.

El componente Serving de Knative toma prestado el enrutamiento de servicios inteligente de Istio, otra aplicación del ecosistema Kubernetes, una malla de servicio de código abierto para  Kubernetes. Istio también proporciona autenticación para solicitudes de servicio, cifrado automático de tráfico para proteger la comunicación entre servicios y métricas detalladas sobre microservicios y operaciones de funciones sin servidor, que los desarrolladores y administradores pueden utilizar para optimizar la infraestructura (Para obtener más detalles acerca de cómo Knative utiliza Istio, lea “Istio and Knative: Extending Kubernetes for a New Developer Experience").

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 apropiados, por lo que no es necesario escribir scripts o implementar middleware para obtener la funcionalidad. Knative también maneja los canales, que son colas de eventos entre las que pueden elegir los desarrolladores, 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 se puedan ejecutar los contenedores.

Las fuentes de eventos de Knative permiten a los desarrolladores crear fácilmente conexiones con generadores de eventos de terceros. El componente Eventing de Knative creará automáticamente la conexión al generador de eventos y dirigirá los eventos generados. No es necesario averiguar cómo hacerlo mediante programación: Knative hace todo el trabajo.

Casos de uso de Knative

A modo de resumen, Knative admite varios casos de uso para aquellos usuarios de Kubernetes que desean simplificar el desarrollo de aplicaciones en contenedores o elevar su nivel de uso de contenedores.

Optimizar Kubernetes. Al eliminar las tareas repetitivas de creación y configuración, Knative hace que los desarrolladores trabajen con un Kubernetes más productivo. 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 la ruta hacia la computación sin servidor. Los entornos sin servidor pueden ser desalentadores para configurar y gestionar manualmente. Knative permite a las organizaciones configurar rápidamente cargas de trabajo sin servidor. En lo que respecta a los desarrolladores, solo crean un contenedor: es Knative el que lo ejecuta como una función sin servidor en segundo plano.

Dar soporte a los ciclos de vida Agile y DevOps. Al permitir que los desarrolladores creen 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 Agile o DevOps. Además, los servicios de Knative se integran fácilmente en líneas de trabajo de CI/CD automatizadas sin requerir software especial o 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 los procesos de negocio. La configuración y el enrutamiento de Knative permiten a los desarrolladores exponer las revisiones de nuevos contenedores a un subconjunto de la base de usuarios, y luego aumentar gradualmente ese público a medida que van resolviendo problemas, o retroceder rápidamente a versiones anteriores si es necesario.

Mantener a los desarrolladores centrados en la codificación y la innovación. DevOps puede permitir a los desarrolladores gestionar sus propios entornos. No obstante, a final de cuentas, los desarrolladores quieren centrarse en crear software libre de errores y nuevas características innovadoras, no en configurar  colas de bus de mensajes para la activación de eventos o la gestión de la escalabilidad del contenedor. Knative permite a los desarrolladores dedicar más tiempo a hacer lo que mejor saben hacer.

Soluciones relacionadas
Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, los desarrolladores de OpenShift tienen una forma rápida y segura de contener e implementar cargas de trabajo empresariales en clústeres de Kubernetes.

Explore Red Hat OpenShift
IBM Cloud Satellite

Implemente y ejecute aplicaciones de manera consistente en entornos locales, edge computing y de nube pública de cualquier proveedor de nube, mediante un conjunto común de servicios en la nube que incluye cadenas de herramientas, bases de datos e IA.

Explore IBM Cloud Satellite
IBM Cloud Code Engine

IBM Cloud Code Engine, una plataforma sin servidor completamente gestionada, le permite ejecutar su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor completamente gestionado.

Explore IBM Cloud Code Engine
Recursos Contenedores en la empresa

Una nueva investigación de IBM documenta el impulso creciente de la adopción de contenedores y Kubernetes.

¿Qué es sin servidor?

Sin servidor es un modelo de desarrollo y ejecución de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código sin gestionar servidores ni pagar por una infraestructura de nube inactiva.

TI flexible, resistente y segura para su nube híbrida

Los contenedores son parte de una estrategia de nube híbrida que le permite crear y gestionar cargas de trabajo desde cualquier lugar.

Dé el siguiente paso

Red Hat OpenShift on IBM Cloud brinda a los desarrolladores de OpenShift una forma rápida y segura de contener e implementar cargas de trabajo empresariales en clústeres de Kubernetes. Implemente clústeres de Kubernetes completamente gestionados y de alta disponibilidad para sus aplicaciones en contenedores con un solo clic.Debido a que IBM gestiona OpenShift Container Platform (OCP), tendrá más tiempo para concentrarse en sus tareas principales.

Conozca Red Hat OpenShift en IBM Cloud