Kubernetes goes serverless in Kubeless
Looking for a serverless option for Kubernetes? Introducing Kubeless. This new Kubernetes-native serverless framework provides auto-scaling, API routing, and more without having to worry about the underlying infrastructure.
Kubernetes means “helmsman” in the original Greek, in order to highlight how much control it brought to users. And now, developers have even more chances to master their fate with the all new Kubeless, the Kubernetes-native serverless framework.
Leveraging Kubernetes resources, Kubeless provides auto-scaling, API routing, monitoring, troubleshooting, and more. It’s purely open source and not affiliated with any company or organization. (Bold move, Kubeless.)
Why make the switch to Kubeless?
Kubeless stands out because it uses Custom Resource Definitions (CRD) to free you from having to write your own API services to handle the custom resource. In this case, Kubeless runs an in-cluster controller that watches these custom resources. Also, the controller launches runtimes on-demand. Helpfully, the in-cluster controller dynamically injects the functions code into the runtimes. It also makes them available over HTTP or via a PubSub mechanism.
Kubeless uses Kafka for an event system. A kafka setup is bundled into the Kubeless namespace for development as well.
Additionally, Kubeless uses k8s primitives. There’s no additional API server or API router/gateway. This makes it easier for Kubernetes users to switch over and leverage their existing skills into Kubeless.
Here are some other tools for this new framework:
- A UI is available, which can run locally or in-cluster.
- A severless framework plugin is also available for additional support.
The way forward
As of right now, Kubeless is still in the early stages. However, they have a detailed roadmap forward and would welcome any helping hands. Here are some of the high level features they are looking to implement:
- Add other runtimes. Currently, Kubeless supports Python, NodeJS and Ruby. We are also providing a way to use custom runtime.
- Investigate other messaging bus (e.g nats.io)
- Instrument the runtimes via Prometheus to be able to create pod autoscalers automatically (e.g use custom metrics not just CPU)
- Optimize for functions startup time
- Add distributed tracing (maybe using istio)
- Break out the triggers and runtimes
- Support additional event framework like nats.io
If you’re interested in Kubeless, the open source Kubernetes-native framework, it’s ready and available at GitHub!