背景
在使用rancher构建k8s时,由于中国区网络问题经常没法访问docker的官方仓库镜像docker.io,而rancher在构建k8s时,会默认从docker.io去下载镜像,由于网络原因,构建就会存在问题,镜像无法下载,rancher的组件没法初始化
现象
比如以下,rancher无法从官方仓库下载到rancher/shell:v0.1.21,rancher/mirrored-coredns-coredns:1.10.1等等
解决方案
修改rancher默认的镜像仓库到指定仓库
具体可以参考rancher官方文档
私有镜像仓库配置参考 | Rancher文档
步骤
修改rancher配置文件/etc/rancher/rke2/registries.yaml
mirrors:
docker.io:
endpoint:
- "https://hub.seagate.com"
rewrite:
"^rancher/(.*)": "base-images/rancher/$1"
configs:
"hub.seagate.com":
tls:
insecure_skip_verify: true
在mirrors部分,代表在访问docker.io时会转向endpoint地址https://hub.seagate.com,并且根据转换规则^rancher/(.*)转向https://hub.seagate.com/base-images/rancher/$1,即在访问docker.io的rancher/rancher:v2.8时会转向hub.seagate.com/base-images/rancher/rancher:v2.8
config部分配置hub.seagate.com跳过tls验证,可以直接拉取镜像。
如此我们就能让rancher构建时去访问我们自己的镜像仓库,我们只需按照镜像需要的名称修改和官方一致,然后上传到私有仓库,rancher就可以在线下构建了