tencent cloud

文档反馈

境外镜像拉取加速

最后更新时间:2024-12-13 21:33:33

    操作场景

    目前大多数开源应用的容器镜像(例如 Kubernetes、TensorFlow 等),都托管在境外镜像托管平台(例如 DockerHub、quay.io 等),在国内拉取镜像时可能存在网络问题导致拉取速度慢、甚至无法成功拉取等问题。常见解决方法为手动将镜像 Pull 到本地,再 Push 到自主搭建的镜像仓库进行手动同步,过程极其繁琐且无法覆盖全部仓库及最新镜像版本。 腾讯云 容器镜像服务 TCR 企业版提供主流境外镜像托管平台加速服务, 可以有效解决境外镜像拉取难导致开源应用无法顺利部署的问题。本文将介绍 TKE 集群如何通过 TCR 加速服务实现境外镜像拉取加速。

    限制条件

    加速服务目前仅面向容器服务 TKE、容器镜像服务 TCR 用户。
    加速服务目前只支持腾讯云 私有网络 VPC 访问,公网访问能力暂未开放,相关域名可以访问但无法提供实际的加速功能。

    操作步骤

    对于 TKE 集群,DockerHub 平台内公开镜像已默认配置加速,如需加速其他平台内镜像仓库,例如 quay.io,则需要进行相关配置。集群运行时为 Docker 或 Containerd,配置方法有所不同:
    集群运行时为 Docker 的配置
    集群运行时为 Containerd 的配置
    对于运行时为 Docker 的节点,由于 Docker 本身不支持 docker.io 以外的加速配置,使用 docker.io 之外的境外容器镜像时,需要执行以下命令更改镜像地址的域名,将 quay.io 替换为 quay.tencentcloudcr.com。示例如下:
    docker pull quay.tencentcloudcr.com/k8scsi/csi-resizer:v0.5.0
    对于运行时为 Containerd 的节点,由于 Containerd 本身支持任意镜像仓库的加速地址配置,可以通过修改 Containerd 配置,实现不更改镜像地址就可自动加速拉取镜像,适用于大量境外镜像的场景,可减少大量地址修改的繁琐步骤。
    1. TKE 添加节点或者使用节点池,可以将节点写入自定义脚本,通过脚本可以统一修改增量节点的 Containerd 配置、添加境外镜像的加速地址。脚本示例如下:
    sed -i '/\\[plugins\\.cri\\.registry\\.mirrors\\]/ a\\\\ \\ \\ \\ \\ \\ \\ \\ [plugins.cri.registry.mirrors."quay.io"]\\n\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ endpoint = ["https://quay.tencentcloudcr.com"]' /etc/containerd/config.toml
    
    或者手动修改存量节点的 Containerd 配置(/etc/containerd/config.toml),添加类似如下配置:
    [plugins.cri.registry]
    [plugins.cri.registry.mirrors]
    [plugins.cri.registry.mirrors."quay.io"]
    endpoint = ["https://quay.tencentcloudcr.com"]
    [plugins.cri.registry.mirrors."docker.io"]
    endpoint = ["https://mirror.ccs.tencentyun.com"]
    
    说明:
    您还可以使用 Ansible 批量修改存量节点的 Containerd 配置,详情请参见 使用 Ansible 批量操作 TKE 节点
    2. 执行以下命令重启 Containerd。示例如下:
    systemctl restart containerd
    
    3. 执行以下命令,使用原始镜像地址拉取镜像。示例如下:
    crictl pull quay.io/k8scsi/csi-resizer:v0.5.0
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持