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

Helm部署时K8s镜像缓存位置及GitLab Runner缓存配置咨询

Helm/Helmfile结合GitLab Runner的Docker镜像缓存配置

缓存镜像的配置环节取决于你的流水线操作类型,分两种场景说明:

一、流水线包含镜像构建步骤(GitLab Runner端配置)

如果你的流水线需要在GitLab Runner上构建Docker镜像再推送到仓库,缓存需要配置在Runner节点,目的是复用镜像构建层,加快build速度:

  • 用docker build --cache-from参数:拉取仓库中已有的镜像作为缓存源,避免重复构建底层镜像层。示例命令:
    docker build --cache-from registry.example.com/your-image:latest -t registry.example.com/your-image:$CI_COMMIT_SHA .
    
  • 配置Runner本地缓存:如果用Docker executor,在Runner的config.toml里挂载本地Docker缓存目录,让不同流水线任务复用同一节点的镜像缓存:
    [[runners]]
      executor = "docker"
      [runners.docker]
        volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/var/lib/docker:/var/lib/docker"]
    
  • GitLab分布式缓存:在.gitlab-ci.yml中配置缓存规则,将镜像构建层存储到GitLab的共享缓存中,适用于Runner节点不固定的场景:
    build:
      stage: build
      script:
        - docker build -t your-image .
      cache:
        key: docker-build-cache
        paths:
          - /var/lib/docker
        policy: pull-push
    

二、流水线仅负责部署已构建的镜像(K8s集群端配置)

如果你的流水线只通过helmfile执行部署操作(镜像拉取由K8s kubelet完成),缓存需要配置在K8s集群节点,目的是减少kubelet重复拉取镜像的时间:

  • 调整kubelet镜像清理阈值:修改kubelet配置文件(如/var/lib/kubelet/config.yaml),设置更高的镜像缓存占比,让节点保留常用镜像:
    imageGCHighThresholdPercent: 80  # 磁盘使用率超过80%时触发镜像清理
    imageGCLowThresholdPercent: 60   # 清理到磁盘使用率60%停止
    
  • 部署本地镜像代理仓库:比如用Harbor、Registry等搭建本地镜像仓库,配置远程镜像拉取代理。在Helm chart中把镜像地址替换为本地仓库地址,kubelet拉取镜像时会先从本地仓库取缓存,取不到再去远端拉取。
  • 使用镜像加速工具:比如stargz-snapshotter,通过将镜像转换为分层压缩格式,实现按需拉取,减少整体拉取时间。

注意:helmfile本身只是Helm的声明式管理工具,不直接参与镜像拉取或缓存的处理,核心是根据流水线的实际操作流程选择对应的配置环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:43:10