3 min read

Kubernetes client tools overview

Kubernetes client tools overview

Introduction

All of us know kubectl, but with wide adoption of Kubernetes over the last few years, several interesting client side tools have come up that can help improve your daily interaction with a Kubernetes cluster.

In this post, we'll take a high level overview of many such client side applications and see how it can help you.

k9s

k9s offers a terminal based UI, to interact with Kubernetes clusters. The UI looks similar to other continuos running Linux commands like top. k9s continually watches the Kubernetes cluster for changes and allows you to interact with Kubernetes resources inline.

  • Type: Standalone (uses kubectl in background).
  • Installation: Binaries for Linux, Windows and Mac are available as tarballs in the release page.
  • Kubernetes version: Currently k9s required Kubernetes version 1.13 and above.
  • Community: k9s is pretty popular and has a great community working together to improve it further. Join the Slack community at K9ersSlack.
  • Interesting features: Supports Plugins which let you define your own cluster commands.
k9s in action

tubectl

Tubectl is a simple yet powerful wrapper around kubectl which aims to reduce complexity of working with contexts, namespaces and intelligent matching resources. Tubectl allows switching seamlessly between contexts and namespaces, for example Instead of typing kubectl --context staging or kubectl --context production now you just type tubectl @st or tubectl @prod. Similarly, Instead of kube-system in such command kubectl get pods -n kube-system, you can type tubectl get pods +sys.

  • Type: Standalone (uses kubectl in background).
  • Installation: Binaries for Linux, Windows and Mac are available as tarballs in the release page.
  • Kubernetes version: Currently tubectl required Kubernetes version 1.13 and above.
  • Community: tubectl community hangs out at slack.reconquest.io.
tubectl in action

webkubectl

Web Kubectl helps you to manage kubernetes credentials and run kubectl command in web browser, so that you don't have to install kubectl on your local PC or some other servers, furthermore Web Kubectl can be used for a team.

  • Type: Standalone (uses kubectl in background).
  • Installation: Simple installation with Docker image. $ docker run --name="webkubectl" -p 8080:8080 -d --privileged kubeoperator/webkubectl.
  • Kubernetes version: Compatible with Kubernetes clusters with support for kubectl.
  • Community: webkubectl discussion happens on the GitHub Repo currently.
  • Interesting features: Multiple session support with single webkubectldeployments, with complete session isolation.
webkubectl in action

kube-prompt

kube-prompt is an interactive kubernetes client featuring auto-complete. It accepts the same commands as the kubectl, except you don't need to provide the kubectl prefix. So it doesn't require the additional cost to use this cli.

  • Type: Standalone (uses kubectl in background).
  • Installation: Binaries for Linux, Windows and Mac are available as tarballs in the release.
  • Kubernetes version: Compatible with Kubernetes clusters with support for kubectl.
  • Community: kube-prompt discussion happens on the GitHub Repo currently.
kube-prompt in action

kubectl-tree

This is a kubectl plugin that allows you to explore relationships between Kubernetes object in well know tree format. The tree layout allows a nice, visual overview of various resources present on the Kubernetes cluster and their relationships.

  • Type: kubectl plugin.
  • Installation: Use krew plugin manager to install kubectl-tree onto kubectl. Refer doc here.
  • Kubernetes version: Compatible with Kubernetes clusters with support for kubectl.
  • Community: kubectl-tree is fairly popular with ~1.5k GitHub stars. All the discussion happens on the GitHub Repo currently.
kubectl-tree in action

Other interesting kubectl plugins

kubectx

kubectx is a utility to manage and switch between kubectl contexts. Refer: https://github.com/ahmetb/kubectx

kubens

kubens is a utility to switch between Kubernetes namespaces. Refer: https://github.com/ahmetb/kubectx/#kubens1

kubectl trace

kubectl trace is a kubectl plugin that allows you to schedule the execution of bpftrace programs in your Kubernetes cluster. Refer: https://github.com/iovisor/kubectl-trace

ksniff

A kubectl plugin that utilize tcpdump and Wireshark to start a remote capture on any pod in your Kubernetes cluster. Refer: https://github.com/eldadru/ksniff.

kubectl-unbound-pvc

A small plugin to list Persistent Volume Claims which are not in Bound state. Refer: https://github.com/ishantanu/kubectl-unbound-pvc