k9s
| Description / name | Input element |
|---|---|
| Container Registry | |
| Container Configuration Root Path | |
| k9s /kubeconfig Path | |
| k9s /config Path |
k9s, the Kubernetes terminal UI, with kubectl, on FreeBSD. Mount your kubeconfig and run it interactively.
| Registry | ghcr.io/daemonless/k9s |
| Daemonless | daemonless/k9s |
| Source | derailed/k9s |
| Website | k9scli.io |
Version Tags
| Tag | Description | Best For |
|---|---|---|
pkg |
FreeBSD Port. Built from FreeBSD packages. | Most users — recommended. |
latest / pkg-latest |
FreeBSD Port. Built from FreeBSD packages. | Production stability. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions, including the security model for host vs. container privileges.
Deployment
Save as run.sh, then run sh run.sh.
Setup Instructions
It is a terminal UI: run it interactively, with your kubeconfig mounted read-only:
kubectl is in the image too: podman run --rm -it -v ~/.kube/config:/kubeconfig:ro --entrypoint kubectl ghcr.io/daemonless/k9s:latest get pods -A.
The image runs as uid 1000. A kubeconfig that only its owner can read (the usual 0600) must belong to uid 1000, or be readable by it; otherwise k9s stops with permission denied on /kubeconfig. Copy it somewhere readable, or add --user 0.
A kubeconfig that points at localhost (a cluster on this same machine) needs --network host, so that address means the host and not the container.
Settings, skins, plugins and k9s's own logs go to /config; mount it to keep them between runs.
Interactive Configuration
Parameters
Volumes
| Path | Description |
|---|---|
/kubeconfig |
Your kubeconfig, read-only (KUBECONFIG points here) |
/config |
k9s settings, skins, plugins and logs (Optional) |
Implementation Details
- Architectures: amd64
- User:
bsd(UID/GID set via PUID/PGID). Defaults to1000:1000. - Base: Built on
ghcr.io/daemonless/base(FreeBSD 15.1).
Need help? Join our Discord community.