¿Qué es Knative?
Knative permite que las cargas de trabajo sin servidor se ejecuten en clústeres de Kubernetes, además de facilitar y acelerar la creación y la orquestación de contenedores con Kubernetes.
fondo negro y azul
¿Qué es Knative?

Knative (pronunciado Ki-NEY-tif) es una extensión de la plataforma de orquestación de contenedores Kubernetes que permite ejecutar cargas de trabajo sin servidor en clústeres de Kubernetes y proporciona herramientas y utilidades que simplifican la creación, el despliegue y la gestión de aplicaciones contenerizadas en Kubernetes, y ofrecen una experiencia más "nativa en Kubernetes" (de ahí el nombre: nativa + "K" de "Kubernetes").

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

Por qué Kubernetes necesita Knative

Kubernetes automatiza y programa el despliegue, la gestión y la escalada de contenedores, que son componentes de aplicación ligeros y ejecutables que combinan código fuente con todas las bibliotecas del sistema operativo (OS) y dependencias requeridas para la ejecución del código en cualquier entorno. 

Los contenedores permiten a los componentes de una aplicación compartir los recursos de una sola instancia de un sistema operativo, de la misma manera que las máquinas virtuales (VM) permiten a las aplicaciones compartir los recursos de un solo sistema 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 release incrementales de las metodologías de desarrollo Agile y DevOps, los contenedores se han convertido en las unidades informáticas de facto de las aplicaciones nativas en la nube modernas. Las empresas que utilizan contenedores se benefician de otras ventajas, incluida la calidad superior 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 en la nube gana popularidad y el uso de contenedores se extiende entre las empresas, las prestaciones de orquestación de contenedores de Kubernetes, como la programación, el equilibrio de carga o la supervisión de estado, facilitan la gestión de esta proliferación. Sin embargo, Kubernetes es una herramienta compleja que requiere que los desarrolladores realicen o hagan plantillas de muchas tareas repetitivas, como extraer código fuente de aplicaciones desde repositorios, crear y suministrar una imagen de contenedores en torno al 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 un conducto de integración continua/entrega continua (CI/DC) automatizado 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 informática sin servidor es un modelo de ejecución nativo en 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, e incluso reduciendo a cero cuando ya no se realizan solicitudes;

  • descarga todas las tareas de gestión de la infraestructura, como la escalada, los parches o el aprovisionamiento, al proveedor de nube, lo que permite a los desarrolladores centrar su tiempo y esfuerzos en el desarrollo y la innovación; y

  • permite que los clientes de la nube paguen solo por los recursos que se utilizan: nunca pagan por la capacidad desocupada.

Por sí mismo, Kubernetes no puede ejecutar aplicaciones sin servidor sin software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico. Knative permite ejecutar cualquier contenedor como 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 direccionamiento de la red, los activadores de eventos y la escalada automática.

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 código fuente en un contenedor. Este proceso normalmente implica varios pasos, que incluyen:

  • Extraer código fuente de un repositorio de código, como GitHub
  • Instalar las dependencias subyacentes, como las variables del 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) pueden 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 despliega y ejecuta contenedores como servicios de Knative escalables. Serving proporciona las siguientes prestaciones destacadas:

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

  • El direccionamiento de servicios inteligente permite a los desarrolladores dirigir el tráfico a diferentes versiones del servicio. Supongamos que ha creado una nueva versión de un servicio, pero quiere desplegarla en un subconjunto de usuarios antes de migrar todos los usuarios. El direccionamiento de servicios inteligente le permite dirigir un porcentaje de solicitudes de usuario al nuevo servicio y el resto de la solicitud a una versión anterior; a medida que vaya confiando más en el nuevo servicio, podrá dirigir más tráfico hacia él.

  • Escalada automática. Knative puede escalar servicios hasta miles de instancias; también puede reducirlas 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 direccionamiento 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 información más detallada sobre 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 estos eventos a los contenedores apropiados, por lo que no es necesario escribir scripts ni 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 se encarga de todo.

Casos de uso de Knative

A modo de resumen, Knative admite varios casos de uso para aquellos usuarios de Kubernetes que quieran 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 permite que los desarrolladores trabajen con Kubernetes de forma más productiva. Cualquier equipo de desarrollo que tenga varios frentes abiertos gestionando un número creciente de clústeres de Kubernetes es un candidato ideal para Knative.

Acelerar la transición a la informática sin servidor. La configuración y la gestión de entornos sin servidor pueden resultar abrumadoras. 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 quien lo ejecuta como una función sin servidor de fondo.

Dar soporte a los ciclos de vida Agile y DevOps.  Al permitir a los desarrolladores crear nuevos contenedores y versiones de contenedores más rápidamente, Knative facilita el despliegue 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 conductos de CI/CD automatizados sin necesidad de software especial ni programación personalizada.

Suavizar la implementación de nuevas características. La implementación de nuevos lanzamientos para los clientes puede exponer problemas de software que podrían afectar a los procesos de negocio. La configuración y el direccionamiento 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 facultar a los desarrolladores para gestionar sus propios entornos. No obstante, a fin 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 de los contenedores. Knative permite a los desarrolladores dedicar más tiempo a hacer lo que se les da mejor.

Soluciones relacionadas
Red Hat OpenShift on IBM Cloud

Con Red Hat OpenShift on IBM Cloud, los desarrolladores de OpenShift obtienen una forma rápida y segura de contenerizar y desplegar cargas de trabajo empresariales en clústeres de Kubernetes.

Explore Red Hat OpenShift
IBM Cloud Satellite

Despliegue y ejecute aplicaciones de manera coherente en entornos locales, de edge computing o de nube pública de cualquier proveedor de nube mediante un conjunto común de servicios en la nube, que incluyen 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 totalmente gestionado.

Explore IBM Cloud Code Engine
Recursos Contenedores en la empresa

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

¿Qué es sin servidor?

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

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

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

Dé el siguiente paso

Red Hat OpenShift en IBM Cloud facilita a los desarrolladores de OpenShift una forma rápida y segura de contenerizar y desplegar cargas de trabajo empresariales en clústeres de Kubernetes. Despliegue clústeres de Kubernetes altamente disponibles y totalmente gestionados para sus aplicaciones en contenedores con un solo clic.Puesto que IBM se encarga de gestionar OpenShift Container Platform (OCP), tendrá más tiempo para centrarse en las tareas más importantes.

Explore Red Hat OpenShift on IBM Cloud