You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MicroK8s Helm部署中使OneDev Kubernetes Executor正常工作?

Kubernetes执行器拉取OneDev镜像报401 Unauthorized的解决方法

问题背景

在MicroK8s集群部署OneDev后,使用Kubernetes执行器运行作业时,拉取docker.io/1dev/k8s-helper-linux:2.12.1镜像失败,报错:

init: failed to pull and unpack image "docker.io/1dev/k8s-helper-linux:2.12.1": failed to resolve reference "docker.io/1dev/k8s-helper-linux:2.12.1": failed to authorize: failed to fetch oauth token: unexpected status from GET request to https://auth.docker.io/token?scope=repository%3A1dev%2Fk8s-helper-linux%3Apull&service=registry.docker.io: 401 Unauthorized

Docker执行器可正常使用,已尝试修改OneDev端口配置、配置kubectl权限、添加集群角色等操作,问题未解决。

核心原因

DockerHub对未认证用户的公共镜像拉取有次数限制,超过限额后会返回401错误要求认证。Kubernetes执行器默认未复用OneDev配置的DockerHub凭证,导致拉取镜像时触发了该限制。

解决方案

1. 创建DockerHub镜像拉取Secret

在MicroK8s集群中创建用于镜像拉取的认证Secret,替换以下命令中的占位符为你的真实信息:

microk8s kubectl create secret docker-registry dockerhub-pull-secret \
  --docker-server=docker.io \
  --docker-username=你的DockerHub用户名 \
  --docker-password=你的DockerHub访问令牌(或密码) \
  --docker-email=你的关联邮箱

若OneDev执行器作业运行在指定命名空间,需添加-n <目标命名空间>参数,在对应命名空间下创建Secret。

2. 配置OneDev Kubernetes执行器使用Secret

登录OneDev后台,进入管理系统 -> 执行器,找到目标Kubernetes执行器:

  • 展开「高级设置」,在「镜像拉取Secret」处填入刚创建的Secret名称dockerhub-pull-secret
  • 确认执行器配置的「命名空间」与Secret所在命名空间一致

3. (可选)设置集群默认镜像拉取Secret

若希望集群内所有Pod默认使用该Secret拉取镜像,可修改默认服务账户:

microk8s kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "dockerhub-pull-secret"}]}'

4. 验证配置

运行临时Pod测试镜像拉取是否正常:

microk8s kubectl run -it --rm test-pull --image=docker.io/1dev/k8s-helper-linux:2.12.1 --restart=Never

若Pod成功启动,说明配置生效,重新触发OneDev作业即可。

内容的提问来源于stack exchange,提问作者Joedahond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:43:15