本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
,否则将报错退出。主要环境变量分类如下:
| 类别 | 环境变量列表 |
|---|---|
| 基础配置 | NAMESPACE、GRACE_PERIOD、SCHEDULE、RUN_DURATION、EVICT、DRY_RUN |
| 标签/注解筛选 | EXCLUDE_LABEL_KEY、EXCLUDE_LABEL_VALUES、REQUIRE_LABEL_KEY、REQUIRE_LABEL_VALUES、REQUIRE_ANNOTATION_KEY、REQUIRE_ANNOTATION_VALUES |
| 日志配置 | LOG_LEVEL、LOG_FORMAT |
| 规则配置 | CHAOS_CHANCE、CONTAINER_STATUSES、POD_STATUSES、MAX_DURATION、MAX_UNREADY |
示例配置:
# 基础配置 NAMESPACE=test SCHEDULE=@every 30s RUN_DURATION=15m EXCLUDE_LABEL_KEY=pod-reaper EXCLUDE_LABEL_VALUES=disabled,false DRY_RUN=false # 启用规则(至少一个) CHAOS_CHANCE=.001 # 混沌概率规则
NAMESPACE""(监控所有命名空间)GRACE_PERIODnil(使用Pod默认优雅关闭周期)time.Duration格式(如"1h15m30s"),0s表示立即硬终止。SCHEDULE"@every 1m"(每分钟检查一次)"* * * * *",可选秒级精度"* * * * * *")或间隔格式(如"@every 30s")。"@every 1h2m3s"(每1小时2分3秒)、"12 * * * * *"(每分钟第12秒执行)。RUN_DURATION"0s"(无限期运行)time.Duration格式(如"15m"表示15分钟)。EXCLUDE_LABEL)避免自我删除导致运行时长不足。EVICTDRY_RUNfalse)1/t/T/TRUE/true/True(启用);0/f/F/FALSE/false/False(禁用)。EXCLUDE_LABEL_KEY 和 EXCLUDE_LABEL_VALUESEXCLUDE_LABEL_KEY且Value在EXCLUDE_LABEL_VALUES列表中,则被排除。EXCLUDE_LABEL_KEY=pod-reaper、EXCLUDE_LABEL_VALUES=disabled,false → 排除标签pod-reaper: disabled或pod-reaper: false的Pod。REQUIRE_LABEL_KEY 和 REQUIRE_LABEL_VALUESREQUIRE_LABEL_KEY且Value在REQUIRE_LABEL_VALUES列表中,才会被考虑。REQUIRE_ANNOTATION_KEY 和 REQUIRE_ANNOTATION_VALUESREQUIRE_LABEL,但基于Pod注解。LOG_LEVELInfoDebug、Info、Warning、Error、Fatal、Panic。LOG_FORMATLogrusLogrus:默认格式;Fluentd:适配Fluentd/Stackdriver的格式。{"level":"info","msg":"loaded rule: chaos chance .3","time":"2017-10-18T17:09:25Z"} {"level":"info","msg":"executing reap cycle","time":"2017-10-18T17:09:55Z"} {"level":"info","msg":"reaping pod","pod":"hello-cloud-deployment-3026746346-bj65k","reasons":["was flagged for chaos","has been running for 3m6.257891269s"],"time":"2017-10-18T17:09:55Z"}
CHAOS_CHANCE为浮点值(范围[0,1))。生成随机数若小于该值,则标记Pod。SCHEDULE=@every 30s # 每30秒检查一次 CHAOS_CHANCE=.01 # 1%概率删除匹配的Pod
EXCLUDE_LABEL排除关键Pod。CONTAINER_STATUSES为逗号分隔的容器状态列表(无空格)。若容器处于Waiting或Terminated状态且状态匹配,则标记Pod。SCHEDULE=@every 10m # 每10分钟检查一次 CONTAINER_STATUSES=ImagePullBackOff,ErrImagePull,Error # 匹配这些容器状态
Evicted)。POD_STATUSES为逗号分隔的Pod状态列表(无空格)。若Pod状态匹配,则标记删除。SCHEDULE=@every 10m # 每10分钟检查一次 POD_STATUSES=Evicted,Unknown # 匹配这些Pod状态
MAX_DURATION为Go语言time.Duration格式。若Pod运行时间超过该值,则标记删除。SCHEDULE=@every 5m # 每5分钟检查一次 MAX_DURATION=2h # 删除运行超过2小时的Pod
MAX_UNREADY为Go语言time.Duration格式。若Pod未就绪时间超过该值,则标记删除。SCHEDULE=@every 5m # 每5分钟检查一次 MAX_UNREADY=10m # 删除未就绪超过10分钟的Pod
pod-reaper依赖Kubernetes服务账户权限,需配置RBAC以允许列出和删除Pod(或使用驱逐API)。
apiVersion: v1 kind: ServiceAccount metadata: name: pod-reaper namespace: default --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pod-reaper-role namespace: default rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "delete"] # 若启用EVICT,需添加"create"(用于创建Eviction) --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pod-reaper-binding namespace: default subjects: - kind: ServiceAccount name: pod-reaper namespace: default roleRef: kind: Role name: pod-reaper-role apiGroup: rbac.authorization.k8s.io
apiVersion: apps/v1 kind: Deployment metadata: name: pod-reaper namespace: default spec: replicas: 1 selector: matchLabels: app: pod-reaper template: metadata: labels: app: pod-reaper pod-reaper: disabled # 排除自身被删除 spec: serviceAccountName: pod-reaper containers: - name: pod-reaper image: target/pod-reaper:latest env: - name: NAMESPACE value: "default" - name: SCHEDULE value: "@every 1m" - name: EXCLUDE_LABEL_KEY value: "pod-reaper" - name: EXCLUDE_LABEL_VALUES value: "disabled" - name: CHAOS_CHANCE value: ".005" # 0.5%混沌概率
apiVersion: v1 kind: Pod metadata: name: pod-reaper-once labels: pod-reaper: disabled # 排除自身 spec: serviceAccountName: pod-reaper restartPolicy: Never # 一次性运行 containers: - name: pod-reaper image: target/pod-reaper:latest env: - name: SCHEDULE value: "@every 30s" # 每30秒检查一次 - name: RUN_DURATION value: "15m" # 运行15分钟后退出 - name: CHAOS_CHANCE value: ".3" # 30%混沌概率
# 示例:删除运行超过2小时且未就绪超过10分钟的Pod MAX_DURATION=2h MAX_UNREADY=10m
# 实例1:混沌概率规则 CHAOS_CHANCE=.01 # 实例2:运行时长规则 MAX_DURATION=2h
EXCLUDE_LABEL为pod-reaper自身添加排除标签,避免自我删除。EVICT可尊重PodDisruptionBudget,适合生产环境。DRY_RUN=true验证规则效果,再实际执行删除。免费版仅支持 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