Wednesday, July 15, 2020

Kubernetes- The Virtual Kubelet

If you are looking at running Kubernetes in a cloud, sooner or later you’ll hear about ‘Virtual Kubelet’. But what is it?

Let’s first go to https://virtual-kubelet.io/ and look at the definition there:

Virtual Kubelet is an open-source Kubernetes kubelet implementation that masquerades as a kubelet.

Mmm. That didn’t help a lot. But wait there is a second sentence, maybe that will explain everything:

This allows Kubernetes nodes to be backed by Virtual Kubelet providers such as serverless cloud container platforms.

Nope. Doesn’t ring a bell. Let’s try to explain this in our own words:

A Kubernetes cluster is divided into two components:

  • Control plane nodes provide the core Kubernetes services and orchestration of application workloads.
  • Nodes run your application workloads.

Kubernetes expects that a node is a virtual (or for the vintage fans a physical) machine. On every node a kind of agent is running that maanages the containers that were created by Kubernetes and runs them on the node it manages. This agent is called a ‘kubelet’.

Okay, we are one step closer. We know what a kubelet is. But what is than a ‘virtual kubelet’?

Let’s introduce the cloud into the picture. On most cloud platforms you can not only run virtual machines but typically there are other (higher level) managed services; like for example serverless with Azure functions or Azure Container instances. Virtual Kubelet is an open-source implementation of Kubernetes kubelet with the purpose of connecting Kubernetes to other APIs. It registers itself as a node and allows us to deploy on top of other cloud native services not limited to virtual machines.

Aha, finally we get the picture…