kubetail/kubetailKubetail is a web-based, real-time log viewer for Kubernetes clusters
Demo: [***]
 simultaneously, in real-time. Under the hood, it uses your cluster's Kubernetes API to monitor your workloads and detect when a new workload container gets created or an old one deleted. Kubetail will then add messages from the new container to your viewing stream or update its UI to reflect that an old container will no longer produce messages. This allows you to follow your application logs easily as user requests move from one ephemeral container to another across services. Kubetail can also help you to debug application issues by allowing you to filter your logs by node properties such as availability zone, CPU architecture or node ID. This can be useful to find problems that are specific to a given environment that an application instance is running in.
The kubetail application consists of a Go-based backend server that connects to your Kubernetes API and a React-based static website that queries the backend server and displays results in the browser. Kubetail is typically deployed as a docker container inside your cluster using a manifest file or a helm chart and can be accessed via a web browser using the same methods you use to connect to your Kubernetes Dashboard (e.g. kubectl proxy). Since, internally, kubetail uses your Kubernetes API to request logs, your log messages always stay in your possession and kubetail is private by default.
Our goal is to build a powerful cloud-native logging platform designed from the ground up for a containerized environment and this project is a work-in-progress. If you notice a bug or have a suggestion please create a GitHub Issue or send us an email (***)!
To allow kubetail to use an internal cluster service account to query your Kubernetes API, use the -clusterauth manifest file:
consolekubectl apply -f [***]
To require kubetail users to utilize their own Kubernetes authentication token, use the -tokenauth manifest file:
consolekubectl apply -f [***]
To install kubetail using helm, first add the kubetail repository, then install the chart:
consolehelm repo add kubetail [***] helm install kubetail kubetail/kubetail --namespace kubetail --create-namespace
To configure the helm chart, please refer to values.yaml for valid values and their defaults. You can use a YAML file or specify each parameter using the --set key=value[,key=value] argument:
consolehelm install kubetail kubetail/kubetail \ --namespace kubetail \ --create-namespace \ -f values.yaml \ --set key1=val1,key2=val2
There are several ways to access the kubetail dashboard once the kubetail application is running in your cluster. For simplicity, we recommend using kubectl proxy if your kubetail deployment is using auth-mode: cluster and the kubectl auth-proxy plugin if it's using auth-mode: token.
The simplest way to access the dashboard, is using kubectl proxy:
consolekubectl proxy
Now you can access the dashboard at: http://localhost:8001/api/v1/namespaces/kubetail/services/kubetail:4000/proxy/.
Another way to access the dashboard is using kubectl port-forward:
consolekubectl port-forward -n kubetail svc/kubetail 4000:4000
Now you can access the dashboard at: http://localhost:4000.
If you've enabled auth-mode: token, then we recommend accessing the dashboard with the kubectl auth-proxy plugin which will automatically obtain an access token locally and add it to the HTTP headers when you make requests to the kubetail service:
consolekubectl auth-proxy -n kubetail [***]
Now your computer will automatically open a new browser tab pointing to the kubetail dashboard.
The kubetail server executable (server) supports the following command line configuration options:
| Flag | Datatype | Description | Default |
|---|---|---|---|
| -c, --config | string | Path to config file | "" |
| -a, --addr | string | Host address to bind to | ":4000" |
| --gin-mode | string | Gin mode (release, debug) | "release" |
Kubetail can be configured using a configuration file written in YAML, JSON, TOML, HCL or envfile format. The application will automatically replace ENV variables written in the format ${NAME} with their corresponding values. The config file supports the following options (also see hack/config.yaml):
| Name | Datatype | Description | Default |
|---|---|---|---|
| addr | string | Host address to bind to | ":4000" |
| auth-mode | string | Auth mode (token, cluster, local) | "token" |
| allowed-namespaces | []string | If populated, restricts namespace access | [] |
| base-path | string | URL path prefix | "/" |
| gin-mode | string | Gin mode (release, debug) | "release" |
| kube-config | string | Kubectl config file path | "${HOME}/.kube/config" |
| csrf.enabled | bool | Enable CSRF protection | true |
| csrf.field-name | string | CSRF token name in forms | "csrf_token" |
| csrf.secret | string | CSRF hash key | "" |
| csrf.cookie.name | string | CSRF cookie name | "csrf" |
| csrf.cookie.path | string | CSRF cookie path | "/" |
| csrf.cookie.domain | string | CSRF cookie domain | "" |
| csrf.cookie.max-age | int | CSRF cookie max age (in seconds) | 43200 |
| csrf.cookie.secure | bool | CSRF cookie secure property | false |
| csrf.cookie.http-only | bool | CSRF cookie HttpOnly property | true |
| csrf.cookie.same-site | string | CSRF cookie SameSite property (strict, lax, none) | "strict" |
| logging.enabled | bool | Enable logging | true |
| logging.level | string | Log level | "info" |
| logging.format | string | Log format (json, pretty) | "json" |
| logging.access-log.enabled | bool | Enable access log | true |
| logging.access-log.hide-health-checks | bool | Hide requests to /healthz from access log | false |
| session.secret | string | Session hash key | "" |
| session.cookie.name | string | Session cookie name | "session" |
| session.cookie.path | string | Session cookie path | "/" |
| session.cookie.domain | string | Session cookie domain | "" |
| session.cookie.max-age | int | Session cookie max age (in seconds) | 43200 |
| session.cookie.secure | bool | Session cookie secure property | false |
| session.cookie.http-only | bool | Session cookie HttpOnly property | true |
| session.cookie.same-site | string | Session cookie SameSite property (strict, lax, none) | "strict" |
| tls.enabled | bool | Enable TLS endpoint termination | false |
| tls.cert-file | string | Path to cert file | "" |
| tls.key-file | string | Path to key file | "" |
Our goal is to build a powerful cloud-native logging platform designed from the ground up for a containerized environment and this project is a work-in-progress. If you're interested in getting involved please send us an email (***) or join our Slack channel (kubetail). In particular we're looking for help with the following:
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务