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…