https://github.com/chmouel/kss
Kubernetes pod status on steroid π
https://github.com/chmouel/kss
cli containers fzf kubernetes pods
Last synced: 5 days ago
JSON representation
Kubernetes pod status on steroid π
- Host: GitHub
- URL: https://github.com/chmouel/kss
- Owner: chmouel
- License: apache-2.0
- Created: 2019-11-23T17:36:40.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-19T17:22:50.000Z (over 1 year ago)
- Last Synced: 2025-04-23T16:03:17.507Z (5 days ago)
- Topics: cli, containers, fzf, kubernetes, pods
- Language: Python
- Homepage:
- Size: 8.15 MB
- Stars: 42
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# KSS - Kubernetes pod status on steroid π
A simple tool to show the current status of a pod and its associated `containers` and `initContainers`.
This was developed out of frustration with `kubectl get pod` not showing much and `kubectl describe pod` showing way too much in a cryptic way. Debugging failed pods with a lot of `initContainers` and `sideCars` usually was done with `kubectl get pod -o yaml |less` with a lot of going up and down over a pager to figure out what's going on and a bunch of swearing π. All those techniques for introspection and debugging are still useful and **KSS** is not planning to fully replace them but now thanks to it you can see quickly what happen and what fails and get your sanity back π .
## Usage
You can specify a pod or multiple ones as argument to **KSS**, if you don't it will launch the lovely [fzf](https://github.com/junegunn/fzf) and let you choose the pod interactively, if there is only one pod available it will select it automatically. If you would like to choose multiple pods you can use the key [TAB] and select them, **KSS** will then show them all.
**KSS** shows a preview when running with fzf, it will try to do the preview with itself if it cannot find itself in the `PATH` it will fallback to a good ol' and boring `kubectl describe` π΄πΌπ΅π».
If you add the `-l` option it will show you the log output of the container, you can adjust how many lines of the log you want to see if you add the flag `--maxlines=INT`.
You can use the `-r` option if you would like to restrict it to only some containers, it accepts a regexp as an argument, so you can do some fancy matching in there. You would typically use this flag combined when you are outputting the container's log (`-l`).
With the `-L` flag you will display the labels and with the `-A` flag you will do the same but for annotations.
## Install
### Packages
#### Homebrew
You can install **KSS** latest with homebrew, you just have to fire up those
commands in your shell and **KSS** and its zsh completions will be installed :```shell
brew tap chmouel/kss https://github.com/chmouel/kss
brew install kss
```This has been tested as working on [linuxbrew](https://docs.brew.sh/Homebrew-on-Linux) too.
#### Arch
It's available on Arch AUR [here](https://aur.archlinux.org/packages/kss).
Install it with your favourite aur installer (i.e: [yay](https://github.com/Jguer/yay))
### Manual install
You just make sure you have >=Python3.6, [fzf](https://github.com/junegunn/fzf) and kubectl. You then can download the [script](https://raw.githubusercontent.com/chmouel/kss/master/kss) and put it directly into your `PATH` or checkout this GIT repo and link the binary into your path so you can have do some git pull to get the updates.
With zsh you can install the [_kss](./_kss) completionfile to your [fpath](https://unix.stackexchange.com/a/33898).
### Misc
I may do a [krew](https://github.com/kubernetes-sigs/krew) plugin if this get [requested](https://github.com/chmouel/kss/issues/1) enough. Watch this space as cool people would say πππ€.
## Screenshots
### Success run

### Failed run

### Failed run with logs

### Restrict the logs output only to a container and only to one line with the -r and --maxlength flags

### Selecting a pod with fzf
[](https://asciinema.org/a/xOCUspvH0z5R2y56jtN32Xk6G)
## Misc
* The code is getting quite tortured, like some sort of spaghetti plate π with greasy meatballs π₯© on the top, the kind of stuff you start to write quickly and dirty out of frustration to fix a problem and it grows it grows until it really become an unreadable beast. I probably going to rewrite it up properly with tests and all (in a compiled language perhaps?) soonish enough.
And I actually did start rewritting the whole thing proper, with a bunch of testcases, nice code and all with all the best practices and all. Starting to write my testcases I realise there is so many crazy edge cases and different status in Kubernetes that would have been getting longer than I tought, so let's say for now that KSS has a i in between and we will keep it "[KISS](https://en.wikipedia.org/wiki/KISS_principle)"
But hey who cares, since it kinda works! (until I broke it :D) π