ack使用containerd拉取自建docker仓库 x509: cannot validate certificate for because it doesn‘t contain 处理

主要是证书问题。

步骤一、生成证书

除了根据k8s从私有仓库拉取镜像

这篇文章生成 ca 文件,domain.key外。还需要生成其他的证书

可以参考传送门

核心点:

# 生成2048位的私钥,也可以生成4096位的,看自己需求
openssl genrsa -out wayne.key 2048
# 生成证书请求文件
openssl req -new -key wayne.key -subj "/CN=ip:port" -out wayne.csr
# 将IP地址写入一个文件,为了解决上述所说的那个问题
echo subjectAltName = IP:ipxxxx>extfile.cnf
# 这里的ca我就使用了集群自带的,在/etc/kubernetes/pki/下
openssl x509 -req -in wayne.csr -CA domain.crt -CAkey domain.key -CAcreateserial -extfile extfile.cnf -out wayne.crt -days 3650  
# 查看证书信息
openssl x509 -in wayne.crt -noout -text

步骤二、配置 worker 节点(所有)相关证书

1st 将上述的所有证书文件,上传到worker 节点服务器

[root]# ls
domain.crt  domain.key  wayne.crt  wayne.csr  wayne.key

2nd 修改/etc/containerd/config.toml文件

vi /etc/containerd/config.toml

按下面的配置进行修改


    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = ""
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."仓库地址"]
           endpoint = ["https://仓库地址"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        [plugins."io.containerd.grpc.v1.cri".registry.configs."仓库地址".tls]
           insecure_skip_verify = false
           ca_file = "/etc/containerd/ssl/wayne.crt"
           cert_file = "/etc/containerd/ssl/wayne.crt"
           key_file = "/etc/containerd/ssl/wayne.key"
        [plugins."io.containerd.grpc.v1.cri".registry.configs."仓库地址".auth]
           username = "用户名"
           password = "密码"

 3rd 将生存的证书信息追加到系统的证书管理文件后

# 将生存的证书信息追加到系统的证书管理文件后
cat wayne.crt >> /etc/pki/tls/certs/ca-bundle.crt

步骤三、重启containerd服务

systemctl restart containerd.service

这样就解决了 ack 拉取镜像时的x509问题了

你可能感兴趣的:(docker,k8s,docker,容器,kubernetes,k8s)