Containerd国内镜像与私有仓库配置
1.概述
本方案仅记录在搭建基于containerd的kubernetes环境时国内镜像配置,以备后续查询,同时给各位学友提供一些参考。
解决国内正常情况下,不能通过使用containerd直接访问docker、谷歌kubernetes等官方原始镜像库的问题。
2.配置
本配置对使用国内镜像和非安全协议(https)访问的配置。
2.1.配置镜像
2.1.1.配置文件
配置文件位于:/etc/containerd/config.toml。
目前编辑使用vi,vim等工具,稍后有时间了更新一下使用工具编辑配置文件。
2.1.2.配置镜像
配置说明:
-
- 文件未toml格式,编辑时需要注意缩进,保持配置文件的可读性。
-
- 示例中的镜像库仅供参考,提供商政策调整可能服务中止。另外,镜像库和原始库可能存在同步时间差,追求最新版的请注意。
配置项:
# 镜像条目配在该条目下
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
配置格式说明:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."{仓库地址1}"]
endpoint = ["{仓库地址2}"]
配置参数说明:
{仓库地址1}仓库访问地址,不包含访问协议。例如:registry.xxx.com。当拉取registory.xxx.com/imageName:version时,containerd会使用该条镜像库进行镜像拉取等操作。{仓库地址2},通常和{仓库地址1}一致即可,除非需要明确访问协议情况,例如http://{仓库地址1}、https://{仓库地址1}。
镜像配置片段:
新手建议阅读一下注释信息。
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
# docker.io的镜像,支持多个配置,但目前docker.m.daocloud.io公开且稳定
# 部署在云平台,例如阿里云、华为云可以增加各自的加速器
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.m.daocloud.io"]
# k8s.gcr.io的官方库镜像,阿里云服务,公开,速度快。
# 问题在于该镜像库不支持命名空间,扁平化处理,镜像存在名称转化的可能。
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["registry.cn-hangzhou.aliyuncs.com/google_containers"]
# k8s的官方库镜像,阿里云服务,公开,速度快。
# 问题在于该镜像库不支持命名空间,扁平化处理,镜像存在名称转化的可能。
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint = ["registry.cn-hangzhou.aliyuncs.com/google_containers"]
# 私有仓库示例,使用docker-registry提供服务
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.0.39:5000"]
endpoint = ["http://192.168.0.39:5000"]
# 域名访问的私有仓库示例,使用docker-registry提供服务
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.xxx.com"]
endpoint = ["http://registry.xxx.com"]
2.1.3.非安全访问配置
默认情况,config.toml项目部分无配置,经过查询资料,默认要求使用tls,例如https等安全访问。
如果不配置,则在访问非安全访问的私有仓库,则会报错,报错信息参考如下所示。
Error response from daemon: Get "https://harbor.xxx.com/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority
配置项:
镜像条目配在该条目下
[plugins."io.containerd.grpc.v1.cri".registry.configs]
配置格式说明:
[plugins."io.containerd.grpc.v1.cri".registry.configs."{仓库地址}".tls]
insecure_skip_verify = true
配置参数说明:
{仓库地址}仓库访问地址,不包含访问协议。例如:registry.xxx.com。当访问相关仓库时,containerd会忽略安全访问提示。insecure_skip_verify为true表示可以非安全访问。设置为false则表示不可以非安全访问。
安全配置相关片段:
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.0.39:5000".tls]
insecure_skip_verify = true
[plugins."io.containerd.grpc.v1.cri".registry.configs."registry.xxx.com".tls]
insecure_skip_verify = true
补充说明
在使用k8s部署构建服务时,建议使用各个厂商的官方镜像。但由于政策问题,国内无法直接访问主要的DockerHub、k8s.gcr.io和registry.k8s.io,对于个人学习和小公司大都使用国内云平台的镜像库镜像站,例如阿里云、华为云等。但部分云平台实际情况,会有自己的策略。此处仅小记,备忘。
阿里云镜像注意点
阿里云的杭州镜像站提供上述官方的镜像,但其不支持命名空间,带命名空间的镜像化转为一级的命名,需要注意。例如在安装Ingress-nginx组件时,镜像ingress-nginx/controllerr需求修改为nginx-ingress-controller。阿里云的北京镜像站没太搞懂。继续研究。
部署在阿里云的环境,可以使用阿里云的加速服务。
POD定义镜像路径
在自行编写deployment/RS/StatefulSet或者下载软件官方yaml时候,注意仓库位置。对于registry.k8s.io或者grc.io的仓库且带命名空间的镜像,且使用阿里云镜像时,需要注意。
部署Harbor服务
Harbor提供良好的镜像管理能力,有利于管理内部的业务镜像,同时可以对常用的官方镜像进行镜像,减小公共服务因政策或则技术原因不可达的影响。
更多推荐

所有评论(0)