Knative
fondo negro y azul
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.

Productos destacados

Red Hat OpenShift on IBM Cloud

IBM Cloud Code Engine

IBM Cloud Satellite

IBM Cloud Kubernetes Service


¿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 administració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 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, la gestión y el escalado de contenedores, componentes de aplicaciones ejecutables y ligeros que combinan 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 cómputo de facto de las aplicaciones modernas nativas de 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 se vuelve más popular y los contenedores seproliferan en una organización, las capacidade de Kubernetes de orquestación de contenedores (programación, equilibrio de carga, supervisión del estado y más), hacen que la proliferación sea mucho más fácil de administrar. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o preparen una plantilla de muchas tareas repetitivas, como extraer el código fuente de la aplicación desde repositorios, construir y aprovisionar una imagen del contenedor alrededor del código, configurar conexiones de red , además de tener a Kubernetes utilizando diferentes herramientas. E incorporar Contenedores administrados por Kubernetes en una 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 adentro de Kubernetes. Un desarrollador puede definir el contenido y la configuración del contenedor en un solo archivo de manifiesto YAML, y Knative hace el resto, creando el contenedor y realizando la programación de la red para configurar una ruta, un ingreso, un balanceo 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.)


Hacer que los contenedores sean sin servidor

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

  • aprovisiona 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 (escalado, programación, parcheo, aprovisionamiento, 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 , ya sea que el contenedor está construido alrededor de una función sin servidor u otro código de aplicación (p. ej., microservicios), abstrayendo el código y manejando el enrutamiento de la red , los desencadenadores de eventos y el autoescalado.


Cómo actúa Knative: componentes Knative

Knative está sobre Kubernetes y agrega tres componentes principales, o primativas: Build, Serving y  Eventing. 

Crear


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

  • Extraer el 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 ejecutarse.
  • Construir imágenes de contenedor
  • Colocar imágenes de contenedor  en un registro donde Kubernetes (y otros desarrolladores) puedan encontrarlas.

Knative utiliza APIs de Kubernetes y otras herramientas para su proceso de construcción. Un desarrollador puede crear un solo manifiesto (normalmente un archivo YAML ) que especifica todas las variables - ubicación del código fuente, dependencias requeridas, etc., y Knative  usa el manifiesto para automatizar la compilación del contenedor. 

Serving


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

  • Configuration define y mantiene el estado de un servicio. También proporciona administración de versiones: cada modificación a la configuración crea una nueva versión del servicio y las versiones anteriores se guardan. 
  • Enrutamiento de servicio inteligente   permite a los desarrolladores enrutar el tráfico a diferentes versiones del servicio. Suponga que ha creado una nueva versión de un servicio, pero desea implementarla en un subconjunto de usuarios antes de migrar a todos los usuarios. Enrutamiento de servicio inteligente   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á dirigir más tráfico hacia él. 
  • Autoscaling. Knative puede escalar los servicios a miles de instancias y también puede reducirlos a cero, es decir, no hay instancias del contenedor en absoluto, lo cual es fundamental para respaldar aplicaciones sin servidor.

Knative Serving pide prestado un servicio de enrutamiento inteligente desde Istio , otra aplicación en el ecosistema de Kubernetes. una malla de servicio de fuente abierta para Kubernetes. Istio también provee autenticación  para solicitudes de servicio, cifrado de tráfico automático para una comunicación segura 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 sobre cómo Knative utiliza Istio, lea "Istio y Knative: extendiendo Kubernetes a una nueva Experiencia de desarrollador.")

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 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 con una acción para que realicen sus contenedores.

Fuentes de eventos

Knative hacen que sea más fácil para los desarrolladores la creación de conexiones con productores de eventos de terceros. Knative eventing creará automáticamente la conexión con el productor de eventos y enrutará los eventos generados. No es necesario averiguar cómo hacerlo mediante programación: Knative hace todo el trabajo.


Casos de uso de Knative

Recapitulando, Knative soporta varios casos de uso de usuarios de Kubernetes  que desean simplificar el desarrollo de aplicaciones en contenedores o llevar su uso de contenedores al siguiente nivel.

  • Streamlining Kubernetes. Al eliminar las tareas repetitivas de construcció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.
  • Acelerando el proceso de cambio a  sin servidor. Entornos Sin servidor  entornos pueden ser abrumadores de configurar y administrar manualmente. Knative permite a las organizaciones configurar rápidamente cargas de trabajo sin servidor. En lo que respecta a los desarrolladores, solo están construyendo un contenedor: es Knative quien lo ejecuta como una función sin servidor detrás de escena.
  • Apoyando 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. Y los servicios Knative  se integran fácilmente en canalizaciones CI/CD automatizadas sin requerir software especial o programación personalizada.
  • Suavizar la implementación de nuevas funciones. La implementación de nuevas versiones para los clientes puede exponer problemas de software que pueden afectar los procesos comerciales. La configuración y el enrutamiento de Knative y permiten que los desarrolladores expongan nuevas revisiones de contenedores a un subconjunto de la base de usuarios y luego aumenten gradualmente esa audiencia con el tiempo a medida que solucionan problemas, o entonces retrocedan rápidamente a versiones anteriores si es necesario.
  • Mantener a los desarrolladores enfocados en la codificación y la innovación. DevOps  puede permitir a los desarrolladores administrar sus propios entornos. Pero a final de cuentas, los desarrolladores quieren centrarse en crear software libre de errores y nuevas funciones 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.

Knative e IBM Cloud

Los contenedores son ideales para modernizar sus aplicaciones y optimizar su infraestructura de TI. Los servicios de contenedor de IBM Cloud, basados en tecnologías de código abierto como Kubernetes, Knative e Istio, pueden facilitar y acelerar su camino hacia el desarrollo de aplicaciones nativas de la nube y hacia un enfoque de nube híbrida abierta que integra las mejores características y funciones de la nube privada, y las infraestructuras de TI locales.

Dé el siguiente paso:

  • Descubra cómo puede implementar clústeres de Kubernetes totalmente administrados y de alta disponibilidad para sus aplicaciones en contenedores con un solo clic utilizando Red Hat OpenShift on IBM Cloud.
  • Implemente y administre aplicaciones en contenedores consistentemente a través de entornos locales, de edge computing y de nube publica de cualquier proveedor con IBM Cloud Satellite.
  • Ejecute imágenes de contenedor, trabajos por lotes o código fuente como una carga de trabajo sin servidor, sin dimensionamiento, implementación, redes o escalado con IBM Cloud Code Engine.

Para comenzar de inmediato a utilizar Knative, inscríbase para una cuenta de IBM Cloud.


Soluciones relacionadas

Nube híbrida

Una estrategia en la nube híbrida abierta le permite crear y gestionar cargas de trabajo desde cualquier lugar, sin dependencia de un proveedor.


Soluciones de infraestructura locales

Descubra cómo la infraestructura adecuada de nube local puede aportar resiliencia y seguridad a su entorno de nube híbrida, incluso durante una disrupción.


Red Hat OpenShift

Red Hat OpenShift en IBM Cloud aprovecha OpenShift en entornos públicos e híbridos para obtener velocidad, capacidad de respuesta al mercado, escalabilidad y confiabilidad.


IBM Cloud Satellite

Con IBM Cloud Satellite puede implementar servicios en la nube consistentes en cualquier lugar; de forma local, en el borde y en los entornos de nube pública.


IBM Cloud Code Engine

IBM Cloud Code Engine, una plataforma sin servidor totalmente gestionada, ejecuta cargas de trabajo en contenedores, incluidas aplicaciones web, microservicios, funciones controladas por eventos y más.