If you are beginner and learning kubernetes. You might get confused with kubernetes tools naming and it’s usecase.Let’s understand difference between them.
kubectl – kubectl is the command-line interface (CLI) tool for working with a Kubernetes cluster.You can use kubectl to deploy applications, inspect and manage cluster resources, and view logs. kubectl is the primary means by which a developer can interact with a Kubernetes cluster. For example, if you want to get the basic information about the nodes in a cluster, you’d type the command:
kubectl get nodes
kind– kind
is known as as “Run local Kubernetes clusters using Docker“.It lets you run Kubernetes on your local computer. This tool requires that you have Docker installed and configured.
Kind provides the following key features:
- Supports multi-node (including HA) clusters
- Supports building Kubernetes release builds from source
- Support for make / bash / docker, or bazel, in addition to pre-published builds
minikube – minikube is known as as “Local Kubernetes engine“. Like kind, minikube is a tool that lets you run Kubernetes locally. minikube runs a single-node Kubernetes cluster on your personal computer (including Windows, macOS and Linux PCs) so that you can try out Kubernetes, or for daily development work.
Some of the features offered by minikube are:
- Local Kubernetes
- LoadBalancer
- Multi-cluster
Kubeadm – Kubeadm is a tool to built Kubernetes clusters. It’s responsible for cluster bootstrapping. Likewise, installing various nice-to-have addons, like the Kubernetes Dashboard, monitoring solutions, and cloud-specific addons, is not in scope.It support also upgrades, downgrades, and managing bootstrap tokens.
Kubeadm runs a series of prechecks to ensure that the machine is ready to run Kubernetes, during bootstraping the cluster kubeadm is downloading and install the cluster control plane components and configure all necessary cluster resources.
Kubeadm’s Features
Common use cases for Kubeadm include testing, creating baselines for more advanced K8s deployments, and providing new K8s users a simple starting point for cluster configuration. The specific features that make kubeadm useful in those applications are:
- Quick minimum viable
cluster creation
- Kubeadm is designed to have all the components you need in one place in one cluster regardless of where you are running them.
- Portable
- Kubeadm can be used to set up a cluster anywhere whether it’s your laptop, a Raspberry Pi, or public cloud infrastructure.
- Local development
- As Kubeadm creates clusters with minimal dependencies and quickly, it’s an ideal candidate for creating disposable clusters on local machines for development and testing needs.
- Building block for
other tools
- Kubeadm is not just a K8s installer. It also serves as a building block for other tools like Kubespray.
Kubelet– Kubelet is the technology that applies, creates, updates, and destroys containers on a Kubernetes node.
Every worker node in a Kubernetes cluster will have an instance of Kubelet running. When it’s time to create a pod and container(s), mechanisms in the Kubernetes controller node inform an instance of Kubelet running on a particular worker node to interact with the node’s container runtime to create the required container(s). Kubelet works with the controller node to organize the container according to its associated pod.
Remember, every node (virtual or physical machine) in a Kubernetes cluster will have an instance of Kubelet running. The following command will return the location of the Kubelet on a Linux machine.
which kubelet
You’ll get output similar to the following
/usr/bin/kubelet
If you want more details to find out the details about kubelet, execute the following command:
kubelet --help
Tool | Purpose | Deployment | Scalability | High Availability | Supported Kubernetes Versions |
---|---|---|---|---|---|
kubectl | Command-line interface for managing Kubernetes clusters | n/a | n/a | n/a | Compatible with all Kubernetes versions |
kind | A tool for running local Kubernetes clusters using Docker containers | Local machine | Small clusters | No automatic high availability | Compatible with all Kubernetes versions |
minikube | A tool for running a single-node Kubernetes cluster on a local machine | Local machine | Single node | No automatic high availability | Compatible with most Kubernetes versions |
kubeadm | A tool for bootstrapping a Kubernetes cluster | On-premises or cloud-based infrastructure | Scalable, large clusters | Supports high availability with additional configuration | Compatible with all Kubernetes versions |
kubelet | An agent that runs on each node in a Kubernetes cluster and manages the container runtime | Each node in a Kubernetes cluster | Scalable, large clusters | No automatic high availability | Compatible with all Kubernetes versions |
In Summary , kubectl is command line tool and kind,minikube,kubeadm helps to run local kubernetes cluster. But you are using any managed cluster like AKS,EKS,GKE or any other you don’t need kind,minikube,kubeadm .You only need kubectl to intract with managed clusters.