This week saw a lot of useful procrastination mostly around different tools to make your day-to-day experience with Kubernetes that little more easier or possibly more exciting. I put together this twitter thread but as with anything on twitter the life span of that thread is gone within minutes so I wanted to document my Kubernetes tips and tricks here as well.
Have you been looking for the man pages for Kubernetes? (man, page is short for manual page) or could also be classed as documentation.
Get documentation of various resources. For instance, pods, nodes, services, etc.
Why would you want to remember every single full command that you ever need to run, why not use autocompletion, this is a simple line of code to be added to your .bashrc or .zshrc file and it gives you that next command or at least a hint on where you might want to go.
Aliases, who wants to be writing kubectl in every time you need to find something else, the simple way to fix this is with an alias, but you could also get creative with other aliases here and add more simplified ways to submit commands. I have started very minimal with just k = kubectl but some people have gone and written what looks to be their own language through aliases.
Here are some solid examples you might want to also try – https://github.com/ahmetb/kubectl-aliases
I don’t know about you but switching contexts takes a few seconds longer when you must do it the manual way, the kubectl config get-contexts to find the context name you want and then kubectl config use-context to switch is a pain, when you have kubectx you have a real easy way of switching between the contexts. There are some other tools out there later as well.
Everything you are doing within your Kubernetes should be based on code, but what if you do make changes in the middle of testing, well with the following command you can export your YAML manifest and make sure your source code is up to date with what you have in your cluster or so you can share the latest with others.
kubectl create deployment nginx –image nginx –dry-run=client -o yaml > deployment.yaml
https://twitter.com/florian_casse made a good point here or an added point with
Ever wanted a way to confirm the changes you are making to your YAML files before applying them to your cluster? Or to see what has changed between? You can see the + and – on the left side of the terminal indicating the differences between the live system and your changes to the YAML file.
kubectl diff deployment.yaml
Want to understand what your CPU and Memory looks like and broken down into different Kubernetes resources, find out with these commands
kubectl top nodes
kubectl top pod –all-namespaces
This one was added by Florian again on the twitter thread, but this allows you colorise the output of kubectl.
Then is where the procrastination came in because I found some more useful or at least that look to be useful for day to day tasks, I am going to list them quickly here but I intend to use these and update the post with hopefully more.
kubens – https://github.com/ahmetb/kubectx/blob/master/kubens – like changing those contexts this allows you to switch to namespaces and stay switched there so you don’t have to add the -n and namespace name every time you want to find out something.
arkade- I have mentioned this before in another blog but you can find more information here, https://github.com/alexellis/arkade I do in fact use this handy little tool to get my clis and other tools.
I think another huge topic we could raise here is kubectl plugins themselves, and this is where I spent most of my day yesterday procrastinating and then even taking the kubestr binary and making that a kubectl plugin. To name a few though here for everyone to go and see if they work for you:
Krew – first and foremost krew is a plugin installer, over 100 plugins available it seems to be like arkade in that it gives you a nice central way to install multiple plugins and it’s a plugin itself.
Then we have a few more that I am not going to describe but leave them here for you to explore and we will try and do another blog soon covering their use cases and why.
I hope this post was useful but more importantly I would love to add your favourite tips, tricks and tools if not mentioned here,