You need to enable JavaScript to run this app.
文档中心
镜像仓库

镜像仓库

复制全文
下载 pdf
镜像推拉
通过 PrivateLink 连通跨账号 VPC
复制全文
下载 pdf
通过 PrivateLink 连通跨账号 VPC
当您需要从一个账号的 VPC 内网拉取另一个账号的镜像仓库中的镜像时,可通过 私网连接(PrivateLink)结合 负载均衡 (CLB),实现同 Region 下跨账号内网镜像拉取。本文介绍通过配置 PrivateLink + CLB 方案,实现跨账号内网访问镜像仓库。
背景信息
核心流量链路如下:
  1. 主账号 B(消费端)
  1. 客户端(例如 K8s Pod)通过内网域名 ****-cn-beijing.cr.volces.com 发起镜像拉取请求。
  1. VPC 内的 PrivateZone 将该域名解析为 PrivateLink 终端节点(Endpoint)的内网 IP 192.168.**.**。
  1. 流量经终端节点弹性网卡(ENI)流出本 VPC。
  1. PrivateLink 跨账号连接
  • 流量通过 PrivateLink 通道从账号 B 安全、单向地转发至账号 A 的终端节点服务。
  1. 主账号 A(服务端)
  1. 流量到达私网 CLB,以 TLS 端到端透传方式转发。
  1. CLB 将流量转发至后端服务器组,即镜像仓库在账号 A VPC 内创建的访问入口 ENI 10.0.**.**。
  1. 流量最终到达镜像仓库,完成镜像拉取。
前提条件
本文以主账号 A(镜像仓库所有者)和主账号 B(镜像消费者)内网打通为例,为您介绍操作流程。操作前请先获取以下信息:
  • 账号信息
  • 已获取主账号 A 和主账号 B 的 ID。
  • VPC 和子网
说明
主账号 A 和主账号 B 的私有网络(VPC)处于相同的可用区。
  • 已完成主账号 A 和主账号 B 下私有网络(VPC)及子网的创建。
  • 镜像仓库实例(主账号 A )
  • 已完成镜像初始化,获取镜像仓库的登录密码,操作详情参见 初始化实例
  • 已获取镜像仓库域名。 您可以在镜像仓库实例概览页的 访问域名 获取该信息。
  • 镜像仓库中已存在镜像,推送镜像至镜像仓库的操作详情参见 推送和拉取制品
操作步骤
第一步:在主账号 A 开启镜像仓库 VPC 访问
在主账号 A 的镜像仓库下新建内网访问入口,获取其 VPC 内网访问入口地址。
  1. 把镜像仓库绑定至主账号 A 下已创建的私有网络。
  1. 在顶部导航栏,选择目标地域。
  1. 在左侧导航栏单击 实例列表 后,在右侧页面 实例列表 区域中找到目标实例,单击 进入实例
  1. 在左侧导航栏单击 访问控制,在访问控制页面,单击 添加 VPC
  1. 配置待添加 VPC 的信息。
  • 参数
    说明
    图示
    账号
    选择 本账号
    关联项目
    关联目标项目。关联后,该项目中成员将根据项目授权获取镜像仓库的对应权限,本示例选择 default(默认项目)
    私有网络
    选择准备工作中已创建的主账号 A 的 VPC。
    子网
    选择准备工作中已创建的主账号 A 的子网。
  1. 单击 确定,完成添加。
  1. 用户 VPC 列表查看目标 VPC 的 内网解析 IP,获取镜像仓库对应 VPC 内网访问地址。
说明
请确保当前内网地址关联的安全组出入方向策略正确,或暂时保持默认。
第二步:在主账号 A 部署私网 CLB
此 CLB 将作为 PrivateLink 的流量入口,并将请求转发至镜像仓库的内网访问地址,即上一步骤的 内网解析 IP
  1. 在主账号 A 的控制台,创建传统型负载均衡实例,操作详情参见 创建CLB实例
  • 参数
    说明
    图示
    地域
    选择主账号 A 所在的地域。
    可用区
    选择准备工作中已创建主账号 A VPC 的可用区。
    网络类型
    选择 私网
    私有网络
    选择准备工作中已创建的主账号 A 的 VPC。
    子网
    选择准备工作中已创建的主账号 A 的子网。
  1. 创建完成后,在实例详情页,配置 TCP 监听器。本文仅介绍与本场景相关的参数,更多参数说明请参见 创建TCP协议监听器
  1. 填写协议和监听配置,完成后单击 下一步
  • 参数
    说明
    图示
    负载均衡协议
    选择 CLB 实例监听的协议类型,本示例选择 TCP
    监听端口
    填写输入监听的端口,本示例填写 443。
    调度算法
    选择监听器转发请求遵循的规则。本示例选择 加权轮询(WRR),即权重值越高的后端服务器,被轮询到的次数(概率)越高。
  1. 填写后端服务器组配置,完成后单击 下一步
  • 参数
    说明
    图示
    添加方式
    选择 创建后端服务器组
    类型
    选择后端服务器组的类型。本示例选择 IP类型,直接将 IP 地址作为后端服务器。
    IP版本
    后端服务器私网IP地址的协议类型,本示例选择 IPv4
  1. 填写后端服务 IP 配置,其余步骤均保持默认设置,直至完成监听器创建。
  • 参数
    说明
    图示
    添加方式
    选择 立即添加
    IP地址
    填写后端服务器的 IP 地址,本示例为镜像仓库在 VPC 中的 内网解析 IP。
    端口
    填写后端服务器提供服务的端口,本示例为 443。
    权重
    填写后端服务器收到请求的权重(百分比) ,本示例填写 100,即所有的流量都会转发至该后端 IP。
第三步:在主账号 A 发布终端节点服务
为 CLB 创建终端节点服务,通过终端节点服务的 PrivateLink 让主账号 B 访问主账号 A 的 CLB。创建成功后可在终端节点服务详情页,获取终端节点服务的名称。
  1. 创建终端节点服务。本文仅介绍与本场景相关的参数,更多参数说明请参见 创建终端节点服务
  • 参数
    说明
    图示
    地域
    选择终端节点服务所属的地域。本示例选择和已创建镜像仓库相同的地域。
    所属项目
    选择终端节点服务所属的项目。本示例选择和已创建镜像仓库相同的项目。
    IP地址类型
    选择终端节点服务的IP地址类型。本示例选择 IPv4
    类型
    选择终端节点服务提供的服务资源类型。本示例选择 传统型负载均衡CLB
    服务资源
    勾选负载均衡实例。选择第二步已创建的 CLB。
  1. 将主账号 B 的账号添加至终端节点服务的白名单。本文仅介绍与本场景相关的参数,更多参数说明请参见 添加服务白名单
  • 参数
    说明
    图示
    白名单范围
    选择终端节点服务的白名单范围。本示例选择 指定账号,即仅允许指定账号下的终端节点与该终端节点服务建立连接,并访问该终端节点服务下的服务资源。
    账号 ID
    输入目标账号的ID,本示例输入主账号 B 的 ID。
  1. 创建成功后,在终端节点服务详情页,获取终端节点服务的名称。
第四步:在主账号 B 创建终端节点
在账号 B 的 VPC 内创建一个连接到账号 A 终端节点服务的终端节点,并获取目标可用区的内网地址。
  1. 使用主账户 B 登录 终端节点控制台,单击 创建终端节点。本文仅介绍与本场景相关的参数,更多参数说明请参见 创建接口终端节点
  • 参数
    说明
    图示
    地域
    选择终端节点所属的地域。本示例选择和已创建镜像仓库相同的地域。
    类型
    选择终端节点的类型。本示例选择 接口
    所属项目
    选择终端节点所属的项目。本示例选择和已创建镜像仓库相同的项目。
    添加方式
    选择待关联终端节点服务的添加方式。本示例选择 通过服务名称添加
    终端节点服务
    本示例填写第三步已获取终端节点服务的名称。
    IP 地址类型
    选择终端节点的 IP 地址类型。本示例选择 IPv4
    私有网络
    选择该终端节点所属的 VPC。选择准备工作中已创建的主账号 B 的 VPC。
    可用区及子网
    勾选需要建立连接的终端节点服务可用区并选择相应的子网。选择与主账号 A 下 CLB 一致的可用区,本示例选择 可用区 D
  1. 终端节点创建完成后,单击终端节点名称,进入终端节点详情页面。选择 可用区与网卡 页签,在可用区列表中,获取目标可用区的内网 IP 地址
第五步:在主账号 B 配置内网 DNS
将主账号 A 中镜像仓库域名指向主账号 B 终端节点的内网 IP,完成流量闭环。
  1. 单击 添加域名
  1. 添加域名 页面,完成以下配置。本文仅介绍与本场景相关的参数,更多参数说明请参见 添加域名
  • 参数
    说明
    图示
    域名
    填写主账号 A 下镜像仓库的域名,例如 test-example-cn-beijing.cr.volces.com
    账号
    选择 DNS 生效的 VPC。选择准备工作中已创建的主账号 B 的 VPC。
  1. 登录新建域名的详情页,单击 添加记录。本文仅介绍与本场景相关的参数,更多参数说明请参见 添加解析记录
  • 参数
    说明
    图示
    域名
    域名前缀,本示例填写 @,表示前缀为空。
    记录类型
    解析记录的类型。填写 A ,将域名指向 IPv4 地址。
    TTL
    解析记录的缓存过期时间,本示例选择 1 分钟。
    记录值
    记录集中的记录值。填写主账号 B 中终端节点的 内网 IP 地址
结果验证
在账号 B 的目标 VPC 内的一台云服务器上执行以下命令,验证链路是否通畅。
  1. DNS 解析验证。
  • 类别
    内容
    执行命令
    查询域名对应的 IP 地址。
    nslookup [主账号 A 下镜像仓库的域名]
    示例:
    nslookup test-cn-beijing.cr.volces.com
    返回结果
    红框中返回的 IP 地址应为终端节点的内网 IP 地址(第四步中获取),即为成功。
  1. 端口连通性验证。
  • 类别
    内容
    执行命令
    测试是否能够连通镜像仓库的 443 端口。
    telnet [主账号 A 下镜像仓库的域名] 443
    示例:
    telnet test-cn-beijing.cr.volces.com 443
    返回结果
    显示 Connected 即为成功。
  1. 镜像拉取验证。
  • 类别
    内容
    执行命令
    拉取主账号 A 镜像仓库中的镜像。
    docker login [主账号 A 下镜像仓库的域名] -u [主账号 A 的 ID] -p [登录镜像仓库的密码]
    docker pull [主账号 A 下镜像仓库的域名]/[镜像仓库命名空间]/[OCI 制品仓库]:[镜像版本]
    docker images
    示例:
    docker login ****-cn-beijing.cr.volces.com -u ****@****.com -p ****
    docker pull ****-cn-beijing.cr.volces.com/namesapce/nginx:latest
    docker images
    返回结果
    本地已存在从 A 账号镜像仓库拉取的镜像。
常见问题
问题现象
可能原因
排查与修复建议
DNS 解析不正确或超时
PrivateZone 未正确关联 VPC。
确认账号 B 的 PrivateZone 已关联目标 VPC。
PrivateZone 记录配置错误或未生效。
检查主机记录与记录值是否正确。
与权威 Zone 冲突。
在客户端执行 ipconfig /flushdns 或重启 nscd 服务刷新 DNS 缓存。
telnet 443 端口超时
跨 AZ 连接:终端节点与 CLB 未部署在同一可用区。
检查并确保 Endpoint 和 CLB 至少在一个共同的 AZ 中部署。
安全组未放通:账号 A 的 CLB 或账号 B 的终端节点 ENI 安全组未放行 443 端口流量。
检查 CLB 安全组入站规则,是否允许来自 PrivateLink 网段的流量。
路由问题:账号 B 的 VPC 内路由表配置异常。
检查 Endpoint ENI 安全组入站规则,是否允许来自客户端子网的流量。
docker login 或 pull 报 TLS 错误
CLB 终止了 TLS:账号 A 的 CLB 监听器误配置为 TLS/SSL 而非 TCP。
将 CLB 监听器协议修改为 TCP,确保端到端 TLS 透传。
客户端证书问题:客户端环境缺少根证书或存在证书校验问题。
在客户端排查 Docker daemon 的证书配置或系统 CA 证书。
CLB 后端健康检查失败
CR 访问入口 ENI 异常。
确认 CR 访问控制中的 ENI 状态正常。
CLB 安全组未放通到 CR ENI 的出站流量。
检查 CLB 安全组的出站规则,确保允许访问后端 ENI 的 443 端口。
健康检查配置不当,例如端口错误。
确认健康检查配置的协议和端口与后端服务一致。
最近更新时间:2026.05.28 11:39:03
这个页面对您有帮助吗?
有用
有用
无用
无用