拉取自建镜像仓库中的镜像时,可能会碰到因协议不同或者证书认证失败而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书的情况下,如何拉取自建镜像仓库中的镜像来创建ECI Pod或者ImageCache。
功能说明
拉取自建镜像仓库中的镜像时,可能会碰到“ErrImagePull”告警事件,出现镜像拉取失败的问题。在保证ECI与镜像仓库网络连通性的前提下,问题原因和解决方法如下:
场景 |
原因 |
解决方法 |
自建镜像仓库采用HTTP协议。 |
ECI默认使用HTTPS协议拉取镜像,协议不同导致镜像拉取失败。 |
配置ECI使用HTTP协议与镜像仓库进行交互。 |
自建镜像仓库采用HTTPS协议,但使用的证书是自签发证书。 |
使用自签发证书的情况下,拉取镜像时无法通过证书认证,导致镜像拉取失败。 |
配置跳过证书认证。 |
配置说明
拉取自建镜像仓库中的镜像时,如果镜像仓库采用HTTP协议,或者使用自签发证书,需配置Annotation来避免镜像拉取失败。相关Annotation说明如下:
配置项 |
示例值 |
说明 |
k8s.aliyun.com/plain-http-registry |
“harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80” |
取值为自建镜像仓库地址。 拉取采用HTTP协议的自建镜像仓库中的镜像时,需配置该参数,使得ECI使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。 |
k8s.aliyun.com/insecure-registry |
“harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80” |
取值为自建镜像仓库地址。 拉取使用自签发证书的自建镜像仓库中的镜像时,需配置该参数来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。 |
说明
-
如果有多个容器的镜像需要从不同的镜像仓库中拉取,支持填写多个镜像仓库地址,各个地址之间采用半角逗号隔开,例如
harbor***.pre.com,192.168.XX.XX
。 -
如果镜像仓库地址有端口号,则需要带上端口号,例如:镜像地址为
192.168.XX.XX:5000/nginx:latest
,则Annotation的值需设置为192.168.XX.XX:5000
。
拉取自建镜像仓库中的镜像创建ECI Pod
配置时,Annotation请添加在Pod的metadata下,例如配置Deployment时,Annotation需添加在spec>template>metadata下。
配置示例如下:
-
示例一:自建镜像仓库采用HTTP协议
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: name: nginx-test annotations: k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000" labels: app: nginx alibabacloud.com/eci: "true" spec: containers: - name: nginx image: 192.168.XX.XX:5000/test/nginx:latest
-
示例二:自建镜像仓库使用自签发证书
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: name: nginx-test annotations: k8s.aliyun.com/insecure-registry: "harbor***.pre.com" labels: app: nginx alibabacloud.com/eci: "true" spec: containers: - name: nginx image: harbor***.pre.com/test/nginx:latest
拉取自建镜像仓库中的镜像创建ImageCache
配置时,Annotation请添加在ImageCache的metadata下,配置示例如下:
-
示例一:自建镜像仓库采用HTTP协议
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: imagecache-sample annotations: k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000" #指定自建镜像仓库地址,使用HTTP协议拉取镜像 spec: images: - 192.168.XX.XX:5000/test/nginx:latest imagePullSecrets: - default:secret1 - default:secret2 - kube-system:secret3 imageCacheSize: 25 retentionDays: 7
-
示例二:自建镜像仓库使用自签发证书
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: imagecache-sample annotations: k8s.aliyun.com/insecure-registry: "harbor***.pre.com" #指定自建镜像仓库地址,拉取镜像时跳过正式认证 spec: images: - harbor***.pre.com/test/nginx:latest imagePullSecrets: - default:secret1 - default:secret2 - kube-system:secret3 imageCacheSize: 25 retentionDays: 7
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/171652.html