ktail
is a tool to tail Kubernetes containers
kubectl logs
, but with a bunch of nice features
It's like
β
Detects pods and containers as they come and go. If you run ktail foo
and later start a pod or container named foo
, then it will be picked up automatically. kubectl
only works on a running pod/container.
β
Tails multiple pods and containers in multiple namespaces at the same time, based on names and labels. kubectl
can only tail a single pod and container. ktail will match the pattern or patterns you specify against both the pod name and the container name.
β
All containers in a pod are tailed by default, not just a specific one. With kubectl
, you have to use -c
. With ktail, just do ktail foo
and all its containers are automatically tailed.
β
Recovers from failure. ktail will keep retrying forever. kubectl
often just gives up.
β Better formatting. ktail will show log lines in different colours, and has syntax highlighting of JSON payloads.
Usage
ktail makes it super easy to tail by pod or container name. The following will match all containers whose pod name or container name contains the substring foo
:
$ ktail foo
The arguments are regular expressions, so this is possible:
$ ktail '^foo'
If no filters are specified, all pods in the current namespace are tailed.
Tailing supports the usual things like labels:
$ ktail -l app=myapp
This will tail all containers in all pods matching the label app=myapp
. As new pods are created, it will also automatically tail those, too.
To abort tailing, hit Ctrl+C
.
Options
Run ktail -h
for usage.
Configuration
Ktail will read the file $HOME/.config/ktail/config.yml
if it exists. This must be a file in YAML format. The following options can be set (these are the defaults):
noColor: false
raw: false
timestamps: false
quiet: false
colorScheme: bw
colorMode: auto
kubeConfigPath: ""
templateString: ""
Templating
ktail has a basic output format. To override, you can use a simple Go template. For example:
$ ktail -t "{{.Container.Name}} {{.Message}}"
The following variables are available:
Timestamp
: The time of the log event.Message
: The log message.Pod
: The pod object. It has properties such asName
,Namespace
,Status
, etc.Container
: The container object. It has properties such asName
.
Installation
Homebrew
$ brew tap atombender/ktail
$ brew install atombender/ktail/ktail
Binary installation
Precompiled binaries for Windows, macOS, Linux (x64 and ARM) are available on the GitHub release page.
From source
This requires Go >= 1.10, as we use Go modules.
$ mkdir -p $GOPATH/src/github.com/atombender
$ cd $GOPATH/src/github.com/atombender
$ git clone https://github.com/atombender/ktail
$ cd ktail
$ go install .
Acknowledgements
Some setup code was borrowed from k8stail.
License
MIT license. See LICENSE
file.