Like Docker, Kubernetes is one of those words I see being thrown around, and I've always been curious about it. Which is one of the reasons why I decided to do Machine Learning Zoomcamp, because of the introduction to Kubernetes the course offers.
From my current understanding, Kubernetes is used for scaling. In this context, for scaling machine learning models. Traditionally, we use Docker containers for packaging a model, but a docker doesn't offer much when it comes to scaling. What happens if traffic spikes, reduces, etc. What Kubernetes does is that is that it automatically spins up more nodes/containers to match your traffic. It's basically a node balancer with extra steps.
While a node balancer distributes traffic between servers, Kubernetes distributes traffic, spins up new nodes, shuts them down, checks their health, restarts, and so on. The smallest unit in Kubernetes is the pod. It's basically where the model lives. Pods are then run on nodes. One or two or as many pods as possible run on a node. What determines the configuration is the deployment.yaml.
A collection of nodes are called a cluster. For nodes, it could be a control pane which contains things like the API that kuberctl talks to, the scheduler, etc. Basically the control node is what orchestrates the worker nodes, which is what runs your pods.
The buzzwords are getting bigger, so I have to stop here.
Kubernetes is either the final or penultimate chapter in the ML Zoomcamp course. Now that I have a grounding in Machine Learning, the next step is to actually go into the world and modelply(Don't worry, I'll see myself out).