当前位置:主页 > 查看内容

容器服务 镜像仓库相关问题 - 常见问题

发布时间:2021-09-18 00:00| 位朋友查看

简介:弹性集群如何使用容器镜像服务 TCR? 弹性集群如需使用容器镜像服务 TCR,需要确保 已选择对应的镜像访问凭证 和 弹性集群到镜像服务网络打通。 确保已选择对应的镜像访问凭证 容器镜像默认私有,因此在创建工作负载时,需选择实例对应的镜像访问凭证。 您可……

弹性集群如何使用容器镜像服务 TCR?

弹性集群如需使用容器镜像服务 TCR,需要确保 已选择对应的镜像访问凭证 和 弹性集群到镜像服务网络打通。

确保已选择对应的镜像访问凭证

容器镜像默认私有,因此在创建工作负载时,需选择实例对应的镜像访问凭证。

您可参考以下步骤创建镜像访问凭证:

  1. 登录 容器服务控制台,进入弹性集群页面。
  2. 单击您需要创建访问凭证的弹性集群名称,进入弹性集群详情页。
  3. 选择左侧的“命名空间”,单击【新建】。
  4. 在新建“新建Namespace” 页中,勾选【自动下发容器镜像服务企业版访问凭证】。
  5. 单击【创建Namespace】进行创建。此时在新建的命名空间上,即可选择镜像的访问凭证。

确保弹性集群到镜像服务网络打通

弹性集群与容器镜像服务之间的网络默认不通,因此在拉取镜像时会报网络不通的错误:

dial tcp x.x.x.x:443: i/o timeout

解决步骤

处理方式有以下两种:

处理方式 说明
方式1:内网访问方式(推荐) 容器镜像服务新建内网访问链路,并配置内网域名解析,弹性集群通过新建的内网链路访问容器镜像服务。
方式2:外网访问方式 弹性集群开启外网访问,通过公网访问容器镜像服务,同时容器镜像服务也需允许公网访问。
  • 方式1:内网访问方式(推荐)
  • 方式2:外网访问方式
  1. 新建内网访问链路
    1. 登录 容器镜像服务控制台,选择左侧导航栏中的【访问控制】>【内网访问】。
    2. 在“内网访问”页面中选择对应的地域和实例,单击【新建】。
    3. 在弹出的“新建内网访问链路”窗口中,配置私有网络及子网信息。如下图所示:
  2. 配置完成并单击【确定】,该内网访问链路将启动新建。
  3. 开启域名内网解析。
    容器镜像服务使用的域名为 “<tcr-name>.tencentcloudcr.com”,此域名在 VPC 内的解析需额外开通。若不开通,“<tcr-name>.tencentcloudcr.com” 的域名依旧解析成公网 IP,无法解析成内网 IP,内网访问将会失败。
    注意:

    新建链路后,需要等待后台生成内网解析 IP,IP 生成后才可开启以下按钮。

常见报错指引

展开全部

Error: failed to do request:Head "xxxx/manifests/late-st": dial tcp xxx:443: i/o timeout

展开&收起

含有 “443: i/o timeout” 报错,大部分情况是因为 EKS 到 TCR 网络不通。
请参见上文 确保弹性集群到镜像服务网络打通,选择其中一种访问方式,打通 EKS 到 TCR 的网络。

注意

“<tcr-name>.tencentcloudcr.com”的域名默认会解析成公网 IP ,报错时请注意识别 “dial tcp xxx” 里的 IP 地址是公网还是内网,按实际情况处理。

Error: code = Unknown, pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

展开&收起

含有 “insufficient_scope: authorization failed” 报错,说明 EKS 到 TCR 网络已经开通,但权限不足。可能原因为命名空间不存在、密钥不正确、密钥不适用正在拉取的镜像等。

Error: code = NotFound, failed to resolve reference "xxx:xxx": not found

展开&收起

含有 “not found” 报错,说明镜像不存在。


其他常见报错指引请参见 容器镜像服务常见问题指引。

弹性集群如何使用自建的自签名镜像仓库或 HTTP 协议镜像仓库?

问题描述

在弹性集群使用自建镜像仓库的镜像创建工作负载,可能会遇到 “ErrImagePull” 报错,拉取镜像失败。如下图所示:

问题原因

通常在保证网络连通性的前提下,可能有以下两个原因导致该问题:

  • 自建镜像仓库采用 HTTPS 协议,但是 HTTPS 协议证书是自签名。
  • 自建镜像仓库采用 HTTP 协议。

上述两个问题都可以通过在工作负载 Yaml 配置里的 PodTemplate 中添加 Annotation 来解决。

解决步骤

  • HTTPS 自签名镜像仓库
  • HTTP 协议镜像仓库

如果自建的镜像仓库是 HTTPS 协议且证书是自签名。则需要在 PodTemplate 中,添加如下 Annotation,使其跳过证书检验:
eks.tke.cloud.tencent.com/registry-insecure-skip-verify: 镜像仓库地址(多个用“,”隔开,或者填写 all)

如下图所示:

说明:

如果 Pod 内多个容器的镜像从不同仓库拉取,可填写多个镜像仓库地址,中间用 “,” 隔开。或填写 “all”,表示 Pod 内所有容器镜像的相关仓库均跳过证书检验。

镜像仓库地址填写说明

以上两个 Annotation 均涉及镜像仓库地址的填写,多个仓库地址可用 “,” 隔开。

注意:

如果镜像仓库有端口号,则需要带上端口号。

例如,镜像地址为 10.16.100.174:5000/busybox:latest,则 Annotation 的 value 应填为 “10.16.100.174:5000”,即 “eks.tke.cloud.tencent.com/registry-insecure-skip-verify: 10.16.100.174:5000”。


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:StopInvocation - 弹性云桌面 下一篇:没有了

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐