Serverless on Kubernetes: Knative and event-driven scaling

Kubedex

4 min read Original article ↗

An application that receives occasional requests may not need to run the same number of containers all day. Serverless platforms hide some server management from application developers and can adjust application capacity as work arrives. When you run one on Kubernetes, your team still needs to operate the underlying cluster or use a managed service for it.

Knative Serving deploys and routes traffic to containerized services and can scale them with incoming requests, including to zero when configured for it. KEDA connects event sources such as queues to workload scaling. These are different jobs: choose Knative when you need its request-serving behavior; use KEDA when workers should scale according to waiting events. Neither removes the need to handle retries or to measure how long a stopped application takes to start.

Separate functions from the platform they require

Serverless on Kubernetes still leaves someone operating the cluster, networking, scaling and observability. Decide whether the workload needs an event-triggered function, request-driven scale-to-zero, a job runner or an inference service before comparing platforms.

Knative Serving and event-driven scaling tools solve different parts of this space. Kubeless is no longer actively maintained by its original upstream. Review current project ownership and deployment requirements for every historical entry. Measure cold starts, request buffering, retry/idempotency and idle infrastructure cost. A function working once is not proof that repeated events or scale-down will preserve work.

The original record

Historical Kubedex content

Original publication: 2018-09-16T14:57:33+00:00. Preserved for context. Commands, versions, prices and results below reflect the original research.

Kubeless vs Fission vs OpenFaas vs Nuclio vs Knative vs Fn vs Apache OpenWhisk

Running serverless applications on Kubernetes is quite new. Most of the options available are still under major development.

You can find the ever growing number of FaaS platforms that run on top of Kubernetes in our FaaS category.

Historical illustration

At lot of the value proposition people are seeing from using AWS Lambda, to quickly string together batch operations, don’t transfer well to Kubernetes. It is currently quicker and easier to simply use containers for this scenario. Similarly, pushing functions straight to Kubernetes provides little more value than wrapping kubectl deployments.

I expect this to change over time as interfaces standardise. Until that happens I’m taking a bit of a back seat and observing while continuing to play with the technology.

If you’re looking for an in-depth comparison of the current state of serverless right now then TheNewStack has produced a great eBook on the subject. I’d suggest that you download this and use that to form your opinion. This picture came from the eBook, and there are many other interesting data points inside.

Historical illustration unavailable.

Kubeless and OpenFaas seem to be neck and neck. This lines up with my experience when browsing forum posts.

OpenLambda doesn’t seem to be Kubernetes specific but it’s interesting that people are voting for it. Similarly, AppScale appears to be better suited to running on cloud instances.

Dispatch is actually a framework. It will let you write functions that deploy on top of Knative. Similar to how the serverless framework will abstract where you can deploy to.

Lunchbadger looks like a paid product. They have a cool name so it may be worth taking a look.

Platforms I’m evaluating

You may have heard about Knative which is a new platform from Google built on top of Istio.

OpenFaas has a great community and lots of activity and is backed by VMWare.

Apache OpenWhisk is incubating but according to popularity stats this has the most contributors currently.

Kubeless, Fission, Fn and Nuclio all have very interesting integrations and architectures.

Platforms I’m not testing (yet)

Rainbond is being developed by a Chinese team but looks like it’s under constant development.

BlueNimble, Gestalt and Riff look really early in development. I’ll try these out when they become more mature and have more contributors.

Sanfran and Iron Functions look abandoned or temporarily stalled.

My Recomendation

I’d just wait and see what becomes the standard. If I was a gambling man I’d put money on Google with their Knative framework in the long run. If forced at gunpoint to install something tomorrow it would probably be Kubeless although I don’t really see the value beyond appeasing a manager who has fallen for the hype.

Historical workbook values; blanks mean unknown, not No. Prices, versions, maturity labels and feature claims are not current recommendations.

Kubernetes FaaS / Sheet1 (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns

50 rows

Sources & further reading

  1. Knative Serving
  2. Kubeless lifecycle notice
  3. KEDA scaling concepts
  4. Recovered historical source
  5. Kubernetes FaaS: historical workbook

Spotted something that needs another look?

Help improve this page →