上云无忧 > 文档中心 > 腾讯云容器服务常见问题QA - 镜像仓库相关
容器服务 TKE
腾讯云容器服务常见问题QA - 镜像仓库相关

文档简介:
Serverless 集群如何使用容器镜像服务 TCR? Serverless 集群如需使用容器镜像服务 TCR,需要确保 已选择对应的镜像访问凭证 和 Serverless 集群到镜像服务网络打通。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

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

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

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

容器镜像默认私有,因此在创建工作负载时:
1. 不指定访问凭证,自动匹配命名空间下已有访问凭证,需要确保当前命名空间下,已有镜像仓库所属的 TCR 实例的访问凭证。
2. 手动指定访问凭证,支持同时指定多个访问凭证。

您可参考以下步骤创建镜像访问凭证:
1. 登录 容器服务控制台
2. 在集群列表页面,单击您需要创建访问凭证的 Serverless 集群名称,进入 Serverless 集群详情页。
3. 在左侧导航中选择命名空间-配置管理-Secret,单击新建
4. 选择 Dockercfg(镜像仓库访问凭证),选择需要下发的命名空间,并配置仓库域名、用户名、密码。

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

Serverless 集群与容器镜像服务之间的网络默认不通,因此在拉取镜像时会报网络不通的错误:
		
dial tcp x.x.x.x:443: i/o timeout

解决步骤

处理方式有以下两种:
处理方式
说明
方式1:内网访问方式(推荐)
容器镜像服务新建内网访问链路,并配置内网域名解析,Serverless 集群通过新建的内网链路访问容器镜像服务。
方式2:外网访问方式
Serverless 集群开启外网访问,通过公网访问容器镜像服务,同时容器镜像服务也需允许公网访问。
方式1:内网访问方式(推荐)
方式2:外网访问方式
1. 新建内网访问链路
1.1 登录 容器镜像服务控制台,选择左侧导航栏中的访问控制 > 内网访问
1.2 在“内网访问”页面中选择对应的地域和实例,单击新建
1.3 在弹出的“新建内网访问链路”窗口中,配置私有网络及子网信息。如下图所示:

2. 配置完成并单击确定,该内网访问链路将启动新建,并自动配置内网解析。
1. 确保容器镜像服务开启公网访问
1.1 容器镜像服务控制台,选择左侧导航栏中的访问控制 > 公网访问
1.2 公网访问页面中选择对应的地域和实例。
1.3 为对应的容器镜像服务实例开启公网访问。

测试体验阶段,可将公网 IP 地址段设置为:0.0.0.0/0。后续运行阶段,可将下文步骤2中涉及的 NAT 网关出口的弹性 IP 添加到公网白名单。
2. 为 Serverless 集群开启公网访问。 Serverless 集群默认不开通外网访问,需通过 NAT 网关进行外网访问,详情可参见 通过 NAT 网关访问外网。 完成 NAT 网关配置后,将 Serverless 集群所在子网关联至 NAT 网关的路由表,并确保 NAT 网关出口的弹性 IP 在访问容器镜像服务的白名单里(请参见上文 步骤1),Serverless 集群即可正常访问容器镜像服务,从公网拉取镜像。

常见报错指引

报错:Error: failed to do request: Head "xxxx/manifests/late-st": dial tcp xxx:443: i/o timeout
如果报错信息中包含 “443: i/o timeout”,大部分情况是因为 TKE Serverless 到 TCR 网络不通。请参考上文 确保 Serverless 集群到镜像服务网络打通,选择其中一种访问方式,打通 TKE Serverless 到 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”,说明 TKE Serverless 到 TCR 网络已经开通,但权限不足。可能原因为命名空间不存在、密钥不正确、密钥不适用正在拉取的镜像等。
报错:Error: code = NotFound, failed to resolve reference "xxx:xxx": not found
如果报错信息中包含 “not found”,说明镜像不存在。
如果以上报错指引无法解决问题,请参见 容器镜像服务常见问题指引

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

问题描述

在 Serverless 集群使用自建镜像仓库的镜像创建工作负载,可能会遇到 “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 内所有容器镜像的相关仓库均跳过证书检验。
说明
默认 Serverless 集群运行时会使用 HTTPS 协议拉取镜像,因此如果镜像仓库支持的协议为 HTTP ,则也需要通过 Annotation 进行说明。
通过命令 “$kubectl describe pod $podname”,发现输出 “http: server gave HTTP response to HTTPS client” 报错,则说明所访问的镜像仓库使用 HTTP 协议。如下图所示:

解决此问题需要在 PodTemplate 中,添加如下 Annotation,使其使用 HTTP 协议访问镜像仓库: eks.tke.cloud.tencent.com/registry-http-endpoint: 镜像仓库地址(多个用 “,” 隔开,或者填写all)
如下图所示:

说明
如果 Pod 内多个容器的镜像从不同仓库拉取,可填写多个镜像仓库地址,中间用 “,” 隔开。或填写 “all”,表示 Pod 内所有容器镜像均采用 HTTP 协议拉取。

镜像仓库地址填写说明

以上两个 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”。
相似文档
  • 基础监控常见问题: 节点 cpu/memory 分配量为什么会超出节点资源规格? 原因:node 层级的 cpu/memory 分配量指标依赖节点上各个 pod 的 cpu/memory request 来计算,在计算时没有把 failed 的 pod 排除。
  • 集群配置日志采集后,为什么在日志服务控制台查看不到日志? 发生日志查看不到或者缺失的情况,请检查是否存在以下问题: 检查所选的日志 topic 是否开启了索引。索引配置是使用日志服务进行检索分析的必要条件。若未开启,则无法查看日志。配置索引的详细操作,请参见 日志服务配置索引。
  • TKE Serverless 如何对接腾讯云原生 Prometheus 监控? 1. 登录 容器服务控制台,选择左侧导航中的云原生监控。 2. 创建监控实例,操作详情请参见 监控实例管理。 3. 完成创建后,在“云原生监控”列表页中单击监控实例名称进入监控实例详情页。
  • 服务的名称为什么不能重复? 服务名称是当前集群下的服务的唯一标识,服务之间可以通过服务名称+访问端口的形式互相访问。
  • 如何判断更新配置后是否成功下发? 您可以先查看资源的 Event 信息,然后根据资源同步的返回码或错误码来判断资源同步是否遇到问题。如果返回码或错误码表明同步失败,您可以参考 Service&Ingress 常见报错和处理 进一步查看错误信息并采取相应的措施来解决问题。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部