落拓 2023-03-06 20:54 采纳率: 0%
浏览 44
已结题

gitlabRrunner无法使用S3缓存

gitlab runner 无法使用S3缓存

gitlab runner 的pod info 的环境变量如下


 Environment:
      CI_SERVER_URL:             ****
      CLONE_URL:                 
      RUNNER_EXECUTOR:           kubernetes
      REGISTER_LOCKED:           false
      RUNNER_TAG_LIST:           k8s-runner
      RUNNER_OUTPUT_LIMIT:       4096
      KUBERNETES_IMAGE:          *****
      KUBERNETES_PRIVILEGED:     true
      KUBERNETES_POLL_TIMEOUT:   180
      KUBERNETES_HELPER_IMAGE:   ****
      KUBERNETES_PULL_POLICY:    always
      CACHE_TYPE:                s3
      CACHE_PATH:                runner
      CACHE_SHARED:              true
      CACHE_S3_SERVER_ADDRESS:   192.168.30.25:20004
      CACHE_S3_BUCKET_NAME:      gitlab-runner
      CACHE_S3_BUCKET_LOCATION:  
      CACHE_S3_INSECURE:         true

但是在实际运行过程中报错:

ERROR: error while generating S3 pre-signed URL error=Get "http://169.254.169.254/latest/meta-data/iam/security-credentials/%22: dial tcp 169.254.169.254:80: i/o timeout

为什么这里会去请求http://169.254.169.254/ 而不是 http://192.168.30.25:20004/.

如何配置缓存才能够生效

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-03-06 21:00
    关注

    “Devil组”引证GPT后的撰写:

    • 这个问题可能是由于 Amazon EC2 实例元数据服务在该节点的默认地址为 169.254.169.254,并且它正在被错误地用作 S3 服务器地址。要解决此问题,您需要检查 S3 服务器地址是否正确,并在 Kubernetes 集群中配置适当的网络策略以确保与 S3 的连接不会受到干扰。

    为了配置 S3 缓存,请按照以下步骤进行操作:

    首先,请确保在 Kubernetes 集群中正确配置了 kubectl 工具,并使用它来检查当前正在运行的 GitLab Runner pod 的详细信息:

    $ kubectl get pods
    NAME                         READY   STATUS    RESTARTS   AGE
    gitlab-runner-5f59f4c4-h4z4f   1/1     Running   0          1d
    
    
    

    然后,请获取 GitLab Runner pod 的详细信息,以查看其环境变量和配置文件:

    $ kubectl describe pod gitlab-runner-5f59f4c4-h4z4f
    
    
    

    确保在环境变量中设置了正确的 S3 缓存配置,例如 CACHE_S3_SERVER_ADDRESS、CACHE_S3_BUCKET_NAME 等。

    检查网络策略是否正确,以确保可以访问 S3。您可以使用以下命令检查当前网络策略:

    $ kubectl get networkpolicy
    
    
    

    如果没有正确配置网络策略,请使用 kubectl 工具创建一个新的网络策略。

    例如,以下是一个允许从 GitLab Runner pod 访问指定的 S3 存储桶的网络策略示例:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: s3-access
    spec:
      podSelector:
        matchLabels:
          app: gitlab-runner
      ingress:
      - from:
        - podSelector:
            matchLabels:
              app: s3
        ports:
        - protocol: TCP
          port: 80
    
    
    

    允许来自标记为 app: s3 的 pod 的 TCP 流量访问端口 80。

    可以将此示例网络策略保存到名为 s3-access.yaml 的文件中,并使用以下命令在 Kubernetes 集群中创建它:

    $ kubectl apply -f s3-access.yaml
    
    
    

    确保在这个示例中,app: gitlab-runner 标签与 GitLab Runner pod 的 metadata.labels 属性匹配。

    通过以上步骤检查和更新配置,应该可以成功使用 S3 缓存来加速 GitLab Runner 的构建和部署过程。

    评论

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 修改了问题 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见