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

配置Secret后无法从JFrog Docker Registry拉取镜像求助

问题分析与解决方案

报错核心是Kubernetes节点的容器运行时(docker/containerd)尝试通过HTTPS访问你的JFrog仓库,但仓库返回了HTTP响应,导致拉取失败。本地docker能成功拉取,是因为你的本地docker已配置信任这个HTTP私有仓库,但K8s节点的容器运行时未做同样配置。

修复步骤

1. 确认镜像地址配置

检查Pod的镜像地址是否正确:

  • 如果你的JFrog仓库仅提供HTTP服务,镜像地址必须以http://开头(比如http://xx.xx.xx.xx:port-number/<docker-registryname>/<application-name>:<tag>),而非默认的HTTPS格式。

2. 配置K8s节点允许HTTP访问私有仓库

根据你使用的容器运行时选择对应配置:

针对Docker运行时

  • 在每个K8s节点上编辑/etc/docker/daemon.json,将私有仓库添加到不安全列表:
    {
      "insecure-registries": ["xx.xx.xx.xx:port-number"]
    }
    
  • 重启docker和kubelet服务:
    systemctl restart docker
    systemctl restart kubelet
    

针对Containerd运行时

  • 在每个K8s节点上编辑/etc/containerd/config.toml:
    找到[plugins."io.containerd.grpc.v1.cri".registry]段落,添加以下配置:
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."xx.xx.xx.xx:port-number"]
      endpoint = ["http://xx.xx.xx.xx:port-number"]
    [plugins."io.containerd.grpc.v1.cri".registry.configs."xx.xx.xx.xx:port-number".tls]
      insecure_skip_verify = true
    
  • 重启containerd和kubelet服务:
    systemctl restart containerd
    systemctl restart kubelet
    

3. 验证ImagePullSecret配置

确保Pod的spec中已正确指定身份验证Secret:

spec:
  imagePullSecrets:
    - name: your-jfrog-secret-name

或者将Secret关联到Pod使用的ServiceAccount:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
imagePullSecrets:
  - name: your-jfrog-secret-name

完成以上配置后,重新创建Pod即可正常拉取镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:15:44