"kube-prompt" - Commands Auto Complete Shell for Kubernetes

kubeprompt shell kubernetes

After introducing the kube-shell couple of articles earlier, we now get to another great shell for kubernetes, called kube-prompt. In this article we again use Minikube local cluster for demonstration, but we will this time use KVM instead of VirtualBox. You can off course also run kube-prompt in VirtualBox if you like that better, but there are quite few reasons to go with KVM. Most important of them: VirtualBox gives your kernel tainted flag due to kernel driver that is out of tree. Some people have reported kernel instability with kmods of VirtualBox, and since kernel is tainted with them, your bug reports won't be seen as first priority. KVM is in mainline kernel so no such problem with it. We are going to use Ubuntu for this article, on my backup laptop, the X220T.

Installing KVM

Obviously, the first thing we need is KVM installation.

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

To be able to use the libvirt without trouble, you need to add your user to libvirt group. Being logged in as your user, run this command

sudo adduser `id -un` libvirt

And finally to test your KVM installation, run this command


Should give you something like this

INFO: /dev/kvm exists
 KVM acceleration can be used

Installing the kubectl, minikube and docker-machine-driver-kvm

We need to install all the binaries. Kubectl is off course first among them, so we install it with following 3 commands.

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/linux/amd64/kubectl

Then add executable bit and move it to path

chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl

Next is minikube. Latest version is 0.22 as of time of writing. We can install it with this one liner

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.22.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

In order to have minikube run on KVM, we need docker-machine-kvm driver. Here is how to download it.

curl -LO https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-ubuntu16.04

And again, executable bit and move to the path

chmod +x docker-machine-driver-kvm-ubuntu16.04

sudo mv docker-machine-driver-kvm-ubuntu16.04 /usr/local/bin/docker-machine-driver-kvm

Bringing up the cluster and run with KVM by default

The binaries are in place but minikube by default looks for VirtualBox. So we can use this command to change default to KVM:

minikube config set vm-driver kvm

After it we can run command that creates cluster

minikube start

Output should be similar to this

Installing the kube-prompt

And finally, now that we have a cluster running, we can install the kube-prompt

wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.1/kube-prompt_v1.0.1_linux_amd64.zip

We need unzip, so if you don't have it, now is time to install it.

sudo apt install unzip

And then let's unzip the archive.

unzip kube-prompt_v1.0.1_linux_amd64.zip

Next move is to add executable bit and move it to the path

chmod +x kube-prompt
 sudo mv kube-prompt /usr/local/bin/kube-prompt

Using the kube-prompt

Entering kube prompt is done simply by typing kube-prompt.

From there we get the auto-completion options, and unlike kube-shell, there is no need to type kubectl command. Make no mistake, they kubectl is still needed, but kube-prompt just types it automatically. Following commands will get you the hello-minikube test deployment and service created:

kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.7 --port=8080
kubectl expose deployment hello-minikube --type=NodePort

Here are some examples for kube-prompt:

get deployments

get pods


get namespaces

get pods --all-namespaces

describe endpoints

As we see, the kube-prompt is somewhat similar to kube-shell we introduced earlier. The main difference is that you don't have to type kubectl. In fact, if you type it, it will throw error, as it will be parsed as kubectl. Kubernetes is becoming easy and productive with kube-prompt and other shells, but they all still need polish as they are rough at edges. Goals of kube-prompt team are outlined on github page. They plan on supporting most of the kubernetes commands which is praise worthy. For now, I will just keep using plain kubectl as none of the shells are production ready yet. Thank you for reading, this is all for this article.

Leave a Comment