首页 容器计算服务 操作指南 镜像 使用自建镜像仓库

使用自建镜像仓库

更新时间: 2024-01-31 15:21:10

拉取自建镜像仓库中的镜像时,可能会碰到因协议不同、证书认证失败或者使用了自建DNS服务器而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书或者自建DNS服务器的情况下,如何拉取自建镜像仓库中的镜像来创建ACS工作负载。

功能说明

拉取自建镜像仓库中的镜像时,可能会碰到“ErrImagePull”告警事件,出现镜像拉取失败的问题。在保证ACS实例与镜像仓库网络连通性的前提下,问题原因和解决方法如下:

场景

原因

解决方法

自建镜像仓库采用HTTP协议。

ACS默认使用HTTPS协议拉取镜像,协议不同导致镜像拉取失败。

配置ACS使用HTTP协议与镜像仓库进行交互。

自建镜像仓库采用HTTPS协议,但使用的证书是自签发证书。

使用自签发证书的情况下,拉取镜像时无法通过证书认证,导致镜像拉取失败。

配置跳过证书认证。

自建镜像仓库的域名使用自建的DNS服务器。

ACS默认使用阿里云DNS(100.100.2.136、100.100.2.138)解析镜像仓库,如果镜像仓库的域名记录存在您自建的DNS服务器,就会导致镜像拉取失败。

配置镜像仓库的DNS信息。

配置说明

如果需要拉取自建镜像仓库的镜像,且自建镜像仓库采用HTTP协议,或者使用自签发证书时,需在容器组(Pod)上配置下列注解来避免镜像拉取失败。

名称

类型

示例值

描述

k8s.aliyun.com/plain-http-registry

String

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

自建镜像仓库地址。

拉取采用HTTP协议的自建镜像仓库中的镜像时,需配置该参数,使得ACS使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。

k8s.aliyun.com/insecure-registry

String

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

自建镜像仓库地址。

拉取使用自签发证书的自建镜像仓库中的镜像时,需配置该参数来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。

alibabacloud.com/image-registry-dns

String

示例值1:

"192.168.XX.XX,192.168.YYY.YY"

示例值2:

根据不同的镜像仓库配置不同的DNS服务器,支持 * 通配符。

'{"harbor.pre.com": ["192.168.XX.XX"], "*.prd.com": ["192.168.YY.YY"]}'

示例值3:

复用Pod中配置的nameservers参数。

"spec.dnsConfig.nameservers"

自建DNS服务器IP地址。最多支持配置3个地址。

如果您根据域名选项配置了不同的DNS服务器列表,每个域名选项最多支持配置3个地址。

说明

如果有多个容器的镜像需要从不同的镜像仓库中拉取,支持填写多个镜像仓库地址,各个地址之间采用英文半角逗号(,)隔开,例如harbor***.pre.com,192.168.XX.XX

下面以无状态应用为例:

  1. 登录容器计算服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态

  3. 在无状态(Deployment)页面选择使用镜像创建

  4. 在您填写完应用基本信息后,点击下一步

  5. 填写完容器配置后,点击下一步

  6. 高级配置页面中,根据您自己的需求,在Pod注解中填入上述配置,比如您需要配置k8s.aliyun.com/plain-http-registry和alibabacloud.com/image-registry-dns:

image

  1. 完成配置后,点击创建按钮,即可。

阿里云首页 容器计算服务 相关技术圈