4 cool Kubernetes tools for mastering clusters

Need to switch Kubernetes contexts in a flash? Want to know what pods are burning up CPU? These tools have all that covered and more

4 cool Kubernetes tools for mastering clusters
Credit: Thinkstock

Kubernetes, the cluster manager for containerized workloads, is a hit. With the Big K doing the heavy lifting in load balancing and job management, you can turn your attention to other matters.

But like nearly every open source project, it's a work in progress, and almost everyone who works with Kubernetes will find shortcomings, rough spots, and annoyances. Here are four projects that lighten the load that comes with administering a Kubernetes cluster.

Kube-applier

A key part of the Kubernetes success story is its uptake with IT brands other than Google. Cloud storage firm Box has picked up on Kubernetes and open-sourced some of the bits it's used to aid with its internal deployment; kube-applier is one such project.

Kube-applier, which runs as a Kubernetes service, takes a set of declarative configuration files for a Kubernetes cluster, as hosted in a Git repository, and applies them continuously to the pods in the cluster. Whenever any changes take place to the definition files, they're automatically pulled from their repo and applied to the pods in question.

The changes can also be applied on a schedule or on demand. Kube-applier logs its behavior each time it runs, and it provides Prometheus-compatible metrics so that you're not in the dark about how it might affect cluster behavior.

Kubetop

Sometimes the simplest tools are the most useful. Written in Python, Kubetop lists all currently running nodes, all pods on those nodes, and all containers in those pods, along with CPU and memory utilization for each, similar to the Unix/Linux top command. It shouldn't be used as a substitute for more elaborate logging or reporting tools—the information it generates is too terse—but sometimes brevity and at-a-glance reporting for a Kubernetes cluster are the order of the day.

If you simply need to know quickly what's burning up your cluster and you're at a command line, this is a handy option. Kubernetes' kubectl has a similar function, but Kubetop's output is formatted more neatly.

Kubectx/K8senv

Kubernetes has the concept of a "context" for referring to discrete clusters with different configuration data. Switching between them with the stock kubectl command-line tool can be verbose and clumsy, so third parties have come up with methods for toggling contexts in a flash.

A simple shell script, Kubectx lets you assign short names to Kubernetes contexts and switch between them by using the short name. Pass a dash (-) to kubectx, and you'll be toggled back to whatever the previous context was without having to remember the name. The script also supports tab-completion for names, so you don't have to dig out long names and retype them manually.

K8senv, another shell script, is much simpler, but also far less powerful. It doesn't have the ability to flip between the current and last context, for instance.

kubeadm-dind-cluster

If you want to spin up a local, single-node instance of Kubernetes for testing, there's a good default for that provided by Kubernetes: Minikube. But for those who want to spin up multinode clusters for testing and developing Kubernetes itself, there's another option: Mirantis' kubeadm-dind-cluster (KDC).

KDC works by using Kubernetes' kubeadm app to launch a cluster made of Docker containers rather than VMs. This allows for faster restarts of the cluster when you're working on Kubernetes, so you can more quickly see the effects of any code changes. It's also possible to use KDC in a continuous integration environment "without having issues with nested virtualization." KDC runs cross-platform—Linux, MacOS, Windows —and doesn't require a Go installation, since it uses Dockerized builds of Kubernetes.