小白前两天用Ceph S3在为Harbor的Registry做后端存储时,不管是在1.x还是最新的2.1版本都会遇到docker push较大块镜像时出现不断重试的情况。
按照以往的经验,小白只能将Ceph的S3改为兼容Swift协议才能成功push镜像。
不过最近这个有了新的解决方案,引起该问题的似乎跟registry服务的配置multipartcopythresholdsize
有关
https://github.com/goharbor/harbor/issues/12317
harbor-helm里面关于multipartcopythresholdsize的默认值是32M
,显然在一个内网镜像仓库,并且docker镜像层没优化的前提下,这个值很容易超过。当前multipartcopythresholdsize最大支持5G
,所以修改helm配置后重新部署服务即可解决该问题。
s3:
region: default
bucket: <your-bucket>
accesskey: <your-accesskey>
secretkey: <your-secretkey>
regionendpoint: <your-endpoint>
#encrypt: false
#keyid: mykeyid
#secure: true
#skipverify: false
#v4auth: true
#chunksize: "5242880"
#rootdirectory: /s3/object/name/prefix
#storageclass: STANDARD
#multipartcopychunksize: "33554432"
#multipartcopymaxconcurrency: 100
multipartcopythresholdsize: "5368709120" \\改为最大值5G