本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本 Docker 镜像封装了 Kubernetes Job 通知插件,是一个轻量级工具,用于监控 Kubernetes 集群中 Job 资源的生命周期事件(如创建、完成、失败、超时等),并将事件信息通过指定渠道发送通知。
| 功能特性 | 说明 |
|---|---|
| 多渠道通知支持 | 支持邮件、Slack、Webhook、钉钉等主流通知渠道,可同时配置多个渠道 |
| 灵活的触发条件配置 | 可自定义通知触发条件(如仅失败时通知、成功/失败均通知、超时通知等) |
| Kubernetes API 原生集成 | 通过 Kubernetes API Server 监听 Job 资源事件,无需额外数据存储依赖 |
| 轻量化设计 | 基于 Alpine 基础镜像,镜像体积 < 50MB,资源占用低(CPU < 50m,内存 < 128Mi) |
| 配置动态更新 | 支持通过 ConfigMap 或环境变量动态调整通知配置,无需重启插件实例 |
| 事件详情自定义 | 可自定义通知内容模板(如包含 Job 名称、命名空间、持续时间、日志链接等) |
[***] 访问)及通知渠道服务(如 Slack API、SMTP 服务器等)jobs 资源的 watch、list、get 操作docker pull [镜像仓库地址]/k8s-job-notifier:v1.0.0 # 替换为实际镜像仓库地址和版本
插件支持两种配置方式:环境变量配置(适合简单场景)和 ConfigMap 配置(适合复杂场景,支持动态更新)。
通过 docker run 或 Kubernetes Pod 的 env 字段传入环境变量,核心配置项如下(完整列表见 5.1 节):
| 环境变量名 | 说明 | 示例值 |
|---|---|---|
NOTIFICATION_CHANNELS | 启用的通知渠道(逗号分隔) | slack,webhook |
TRIGGER_CONDITIONS | 触发通知的 Job 状态(逗号分隔) | failed,timeout,completed |
SLACK_WEBHOOK_URL | Slack 通知 Webhook URL | [***] |
WEBHOOK_ENDPOINT | Webhook 通知接收地址 | [***] |
通过 ConfigMap 存储复杂配置(如多渠道详细参数、通知模板),示例 ConfigMap:
apiVersion: v1 kind: ConfigMap metadata: name: job-notifier-config namespace: kube-system data: config.yaml: | notification: channels: - type: slack webhook_url: "[***]" channel: "#job-alerts" username: "k8s-job-notifier" - type: webhook endpoint: "[***]" method: "POST" headers: Content-Type: "application/json" trigger_conditions: ["failed", "timeout"] # 仅失败或超时触发通知 template: title: "Kubernetes Job {{.JobName}} ({{.Namespace}}) {{.Status}}" body: | Job 名称: {{.JobName}} 命名空间: {{.Namespace}} 状态: {{.Status}} 开始时间: {{.StartTime}} 持续时间: {{.Duration}} 日志链接: {{.LogURL}}
docker run -d \ --name k8s-job-notifier \ -e KUBERNETES_API_URL="[***]" # 替换为实际 K8s API 地址 -e KUBERNETES_TOKEN="eyJhbGciOiJSUzI1NiIsImtpZCI..." # 替换为具有 Job 访问权限的 Token -e NOTIFICATION_CHANNELS="slack" \ -e TRIGGER_CONDITIONS="failed,completed" \ -e SLACK_WEBHOOK_URL="[***]" \ [镜像仓库地址]/k8s-job-notifier:v1.0.0
步骤 1:创建 RBAC 权限配置
插件需通过 RBAC 获取监听 Job 资源的权限:
apiVersion: v1 kind: ServiceAccount metadata: name: job-notifier-sa namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: job-notifier-role rules: - apiGroups: ["batch"] resources: ["jobs"] verbs: ["watch", "list", "get"] # 监听 Job 事件需 watch/list/get 权限 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: job-notifier-binding subjects: - kind: ServiceAccount name: job-notifier-sa namespace: kube-system roleRef: kind: ClusterRole name: job-notifier-role apiGroup: rbac.authorization.k8s.io
步骤 2:创建 Deployment
使用 ConfigMap 配置(需先创建 4.2.2 节的 ConfigMap):
apiVersion: apps/v1 kind: Deployment metadata: name: job-notifier namespace: kube-system spec: replicas: 1 selector: matchLabels: app: job-notifier template: metadata: labels: app: job-notifier spec: serviceAccountName: job-notifier-sa # 关联 RBAC 权限 containers: - name: job-notifier image: [镜像仓库地址]/k8s-job-notifier:v1.0.0 volumeMounts: - name: config-volume mountPath: /etc/job-notifier/config.yaml subPath: config.yaml # 挂载 ConfigMap 中的配置文件 resources: limits: cpu: 100m memory: 256Mi requests: cpu: 50m memory: 128Mi volumes: - name: config-volume configMap: name: job-notifier-config # 关联 4.2.2 节创建的 ConfigMap
检查 Pod 状态:
kubectl get pods -n kube-system -l app=job-notifier
确保 Pod 状态为 Running。
查看日志:
kubectl logs -n kube-system <pod-name> -f
确认日志中无错误信息,且包含 "Successfully connected to Kubernetes API" 等初始化成功日志。
测试通知:
创建一个测试 Job 并故意使其失败(如执行 exit 1),检查通知渠道是否收到告警。
| 参数名 | 必选 | 说明 | 默认值 | 示例值 |
|---|---|---|---|---|
KUBERNETES_API_URL | 否 | Kubernetes API Server 地址(集群内可省略,默认通过 Service 发现) | [***] | [***] |
NOTIFICATION_CHANNELS | 是 | 启用的通知渠道(逗号分隔,支持 slack/webhook/email/dingtalk) | - | slack,webhook |
TRIGGER_CONDITIONS | 否 | 触发通知的 Job 状态(逗号分隔,支持 completed/failed/timeout) | failed,timeout | completed,failed |
LOG_LEVEL | 否 | 日志级别(debug/info/warn/error) | info | debug |
SYNC_INTERVAL | 否 | Job 状态同步间隔(秒),用于补充事件监听遗漏的状态变更 | 30 | 60 |
| 参数名 | 必选 | 说明 | 示例值 |
|---|---|---|---|
SLACK_WEBHOOK_URL | 是 | Slack Incoming Webhook URL | [***] |
SLACK_CHANNEL | 否 | 通知目标频道(默认使用 Webhook 配置的频道) | #dev-alerts |
SLACK_USERNAME | 否 | 通知发送者名称 | k8s-job-notifier |
| 参数名 | 必选 | 说明 | 示例值 |
|---|---|---|---|
WEBHOOK_ENDPOINT | 是 | Webhook 接收地址 | [***] |
WEBHOOK_METHOD | 否 | HTTP 请求方法(POST/GET) | POST |
WEBHOOK_TIMEOUT | 否 | 请求超时时间(秒) | 10 |
ClusterRole 权限以监听 Job 资源,参考 4.3.2 节的 RBAC 配置。batch/v1 Job 资源版本差异)。replicas: 2),避免单点故障。envFrom 挂载 Secret)。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429