Containerization is a given for cloud-native world, or does it have to be?
Traditionally with dockerfile,docker-compose scenario - one would have a
Dockerfile, build and run the images with docker-engine.
docker-compose helps create a stack that can be built, run, logged and scaled, but it is limited to one host (generally
localhost on which docker engine is running)
Advent of kubernetes as the de-facto orchestration engine for containerized workloads helps with coordination and orchestration. The entry fee though, is still very high - asking the developer to create multiple yaml files to create a running-container(
pod) that can be accessed over http(
service). The second-order concepts like Ingress and HPA cause more confusion in-spite of being very useful from a resilient infrastructure perspective
The popularity of AWS Lambda got the kubernetes folk thinking of resolving these deployment complexities and gave rise to projects like OpenFaaS and the number of other serverless frameworks that have come-up based on KNative (Kubeless, KEDA, Fission ..)
These frameworks also help with building elastically scaling workloads and creating Event Driven Architecture. The emergence of Cloud Events has helped arrive at a common specification for event payloads to enable plugging-in event based systems like Kafka, NATS, RabbitMQ
Virtual Kubelet is a project towards creating virtual/serverless kubernetes nodes
Description and schematic from Virtual Kubelet github page
Virtual Kubelet is an open source Kubernetes kubelet implementation that masquerades as a kubelet for the purposes of connecting Kubernetes to other APIs. This allows the nodes to be backed by other services like ACI, AWS Fargate, IoT Edge, Tensile Kube etc. The primary scenario for VK is enabling the extension of the Kubernetes API into serverless container platforms like ACI and Fargate, though we are open to others.