前言
当要从非安全的镜像仓库中进行 Pull
、Push
时,会遇到 x509: certificate signed by unknown authority
错误提示; 这是由于镜像仓库是可能是 http
服务,或者 https
的证书是自签名的就会出现这个问题。
Containerd
可以配置为连接到私有镜像仓库,并使用仓库在每个节点上拉取私有镜像。
Containerd
中的配置可以用于通过 TLS 连接到私有镜像仓库,也可以与启用验证的镜像仓库连接。
下面以三种运行时来说明,如何解决这个问题
配置 Containerd
vim /etc/containerd/config.toml
在 /etc/containerd/config.toml
文件中加入如下的配置:
[plugins."io.containerd.grpc.v1.cri".registry.configs."test.registry.com".tls] # test.registry.com harbor地址
insecure_skip_verify = true # 跳过tls认证
配置之后需要重启 containerd
,重启命令为:
systemctl restart containerd
containerd
配置完成!!
如下配置:
vim /etc/containerd/config.toml # 添加如下信息
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
# 如下这些仓库可以作为公共仓库使用
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://gcr.mirrors.ustc.edu.cn"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["https://gcr.mirrors.ustc.edu.cn/google-containers/"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
endpoint = ["https://quay.mirrors.ustc.edu.cn"]
# 内部私有仓库配置
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."www.myharbor.com"]
endpoint = ["https://www.myharbor.com/"]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
# 内部私有仓库认证信息
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com"] # 这行不确定要不要写上
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".tls]
insecure_skip_verify = false # 是否跳过证书认证
ca_file = "/etc/containerd/www.myharbor.com/ca.crt" # CA 证书
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".auth]
username = "test" # 在harbor里单独创建的用户,授权访问指定项目
password = "Test123456"
配置 Docker
在 /etc/docker/daemon.json
文件中加入如下配置:
{
"insecure-registries": [
"test.registry.com",
"test.registry.com1"
]
}
修改之后重启 docker 即可,重启命令为:
systemctl restart docker
docker
配置完成!!
配置 CRI-O
修改 /etc/crio/crio.conf 配置文件:
insecure_registries = ["test.registry.com"]
重启 crio:
systemctl restart crio
crio
配置完成!!