Kubernetes中部署Docker registry2.7.1并通过containerd实现拉取镜像到应用Pod的部署

本文介绍了如何在Kubernetes中部署Docker registry 2.7.1并使用containerd从私有仓库拉取镜像。详细步骤包括下载registry镜像、生成证书和密码文件、部署私有仓库、配置DNS域名以及验证应用部署。过程中解决了registry与containerd版本不兼容导致的镜像找不到问题。
摘要由CSDN通过智能技术生成

这里主要介绍一下私有仓库(HTTPS)在Kubernetes中部署的问题,由于Kubernetes将弃用docker,因此这里主要介绍以下使用containerd替换docker后如何从私有仓库拉取镜像并完成镜像的部署。

下载registry2.7.1的镜像文件

说明:在使用registry2.3.1的话会有一个严重的问题,问题就是在yaml或者在命令行通过ctr和crictl命令拉取镜像时携带的sha256值和私有仓库中镜像存储的实际sha256不一致,因此会报找不到镜像的问题:not found: not found的错误,所以尽量使用2.7.1版本以上的镜像,并且2.7.1版本以上的仓库支持加密镜像的存储。

docker pull registry:2.7.1

生成证书文件

这里说明一下:由于containerd默认的仓库为docker.io,因此在创建私有仓库时使用IP地址才会在后面的操作中避开它自动连接到默认仓库的问题,因此在制作证书的这步就要提前考虑好该问题,因为在证书制作的过程中CN字段的值就要设置为IP地址。

# 在集群中某个节点找个位置新建一个文件夹
mkdir docker-registry
cd  docker-registry
mkdir certs
# 生成2048位的私钥,也可以生成4096位的,看自己需求
openssl genrsa -out Yuan.key 2048
# 生成证书请求文件
openssl req -new -key Yuan.key -subj "/CN=10.131.82.53" -out Yuan.csr
# 将IP地址写入一个文件,为了解决上述所说的那个问题
echo subjectAltName = IP:10.131.82.53>extfile.cnf
# 这里的ca我就使用了集群自带的,在/etc/kubernetes/pki/下
openssl x509 -req  -in Yuan.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out Yuan.crt -days 5000  
# 查看证书信息
openssl x509 -in Yuan.crt -noout -text
# 将生存的证书信息追加到系统的证书管理文件后
cat Yuan.crt >> /etc/pki/tls/certs/ca-bundle.crt

在大概中间的位置会看到一个类似下图的信息:

img

不然会报如下的错误:

x509: cannot validate certificate for 10.131.82.53 because it doesn't contain any IP SANs

生成密码认证文件

yum install httpd-tools
mkdir auth
htpasswd -Bbn Yuan Abcd123456 > /home/docker-registry/auth/htpasswd

部署私有仓库

编写部署文件

docker-registry.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: docker-registry
  namespace: default
spec:
  selector:
    matchLabels:
      app: docker-registry
    spec:
      nodeSelector:
        kubernetes.io/hostname: master1
      containers:
      - name: docker-registry
        image: docker.io/library/registry:2.7.1
        imagePullPolicy: IfNotPresent
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值