Difference between kubectl,kind,minikube,kubeadm and kubelet

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

kindkind 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
ToolPurposeDeploymentScalabilityHigh AvailabilitySupported Kubernetes Versions
kubectlCommand-line interface for managing Kubernetes clustersn/an/an/aCompatible with all Kubernetes versions
kindA tool for running local Kubernetes clusters using Docker containersLocal machineSmall clustersNo automatic high availabilityCompatible with all Kubernetes versions
minikubeA tool for running a single-node Kubernetes cluster on a local machineLocal machineSingle nodeNo automatic high availabilityCompatible with most Kubernetes versions
kubeadmA tool for bootstrapping a Kubernetes clusterOn-premises or cloud-based infrastructureScalable, large clustersSupports high availability with additional configurationCompatible with all Kubernetes versions
kubeletAn agent that runs on each node in a Kubernetes cluster and manages the container runtimeEach node in a Kubernetes clusterScalable, large clustersNo automatic high availabilityCompatible 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.

Leave a Reply

Your email address will not be published. Required fields are marked *