更新时间:2025-07-18 GMT+08:00

使用第三方镜像

第三方镜像是指由除官方镜像仓库和SWR镜像仓库外,其他组织或个人提供的容器镜像。这些镜像通常包含自定义应用程序、工具或特定版本的操作系统,能够满足用户特定的业务需求。在Standard/Turbo集群中,用户可以通过密钥认证的方式拉取第三方镜像,进而创建工作负载,满足业务需要。更多信息,请参见Images | Kubernetes

前提条件

使用第三方镜像时,请确保Standard/Turbo集群可以正常访问其仓库所在的网络环境,具体分为三种情况:

  • 内网访问:当第三方镜像仓库支持内网访问时,存在以下情况:
    • 当第三方镜像仓库位于集群所在的VPC内时,Pod可以通过内网访问直接拉取镜像,无需额外配置。
    • 当第三方镜像仓库与集群处于同一区域的不同VPC时,可以通过对等连接打通两个VPC之间的网络,之后Pod可以通过内网访问直接拉取镜像。关于对等连接的具体操作,请参见对等连接
  • 公网访问:当第三方镜像仓库支持公网访问时,Pod可以通过公网拉取镜像。此时,需确保Pod具备访问公网的能力。您可以通过以下方式,确保Pod具备访问公网的能力:

    当使用公网访问方式拉取镜像时,请确保EIP的带宽充足,以避免因带宽不足导致镜像拉取失败或拉取速度过慢。

    • 为集群配置SNAT规则(Standard/Turbo集群):配置SNAT规则后,集群中的Pod实例都将具备访问公网的能力。此时,创建新的工作负载,可以直接通过公网拉取镜像。具体操作步骤,请参见从容器访问公网
    • 为节点绑定弹性公网IP(Standard集群):为工作负载运行的节点绑定弹性公网IP(EIP)。绑定EIP后,该节点上所有工作负载都能够访问公网。具体操作步骤,请参见绑定弹性公网IP
  • 云专线或VPN访问:当需要使用云下镜像仓库时,您需要通过云专线VPN的方式,提前将第三方镜像仓库所在的网络环境与集群所在VPC打通。网络环境打通后,无需额外配置。

使用第三方镜像

使用第三方镜像时,需先创建镜像拉取密钥,并在工作负载中引用该密钥以授权访问。本文共提供两种配置方式,即控制台方式和kubectl命令行方式。

本节将详细介绍如何通过控制台创建密钥,并基于该密钥拉取第三方镜像以创建工作负载。

  1. 如果第三方镜像仓库存在账号和密码,则需要在集群中创建相关密钥,作为拉取镜像的身份凭证。

    1. 登录CCE控制台
    2. 单击集群名称进入集群。
    3. 在左侧导航栏中,单击“配置与密钥”。在右侧选择“密钥”页签,单击右上角“创建密钥”
    4. “创建密钥”页面,配置相关参数,具体请参见图1 添加密钥表1。更详细的参数说明,请参见创建密钥
    图1 添加密钥

    表1 添加密钥

    参数

    示例

    参数说明

    名称

    test

    表示新建的密钥名称。

    由小写字母、数字、横线(-)和点(.)组成,且以字母或数字开头和结尾,最长支持253个字符。

    密钥类型

    kubernetes.io/dockerconfigjson

    表示新建的密钥类型。

    本处固定为“kubernetes.io/dockerconfigjson”,表示该密钥是拉取第三方镜像时所需要的认证信息。

    密钥数据

    镜像仓库地址:www.example.com

    用户名:ssl

    密码:xxx

    • 镜像仓库地址:请填入第三镜像仓库的地址。
    • 用户名:请填入第三方镜像仓库的账号。
    • 密码:请填入第三方镜像仓库的密码。

  2. 在左侧导航栏中,单击“工作负载”,在右上角单击“创建工作负载”“创建工作负载”页面中,在“容器配置 > 容器信息 > 基本信息 > 镜像名称”中直接填写第三方镜像地址。并在“镜像访问凭证”中选择1中创建的密钥。

    图2 填写第三方镜像地址

  3. 填写其他参数后,单击“创建工作负载”。待工作负载状态变为运行中时,则说明第三方镜像拉取成功。
  1. 请参见通过kubectl连接集群,使用kubectl连接集群。
  2. 如果第三方镜像仓库存在账号和密码,则需要在集群中创建相关密钥,作为拉取镜像的身份凭证。

    1. 执行以下命令,创建认证密钥。该密钥类型默认为kubernetes.io/dockerconfigjson类型,表示该密钥是拉取第三方镜像时所需要的认证信息。
      kubectl create secret docker-registry test  -n default --docker-server=www.example.com --docker-username=ssl --docker-password=xxx --docker-email=example@123.com

      其中,test为密钥名称,default为密钥所在的命名空间,其余参数如下所示。

      表2 密钥参数说明

      参数

      示例

      参数说明

      docker-server

      www.example.com

      请填入第三镜像仓库的地址。

      docker-username

      ssl

      请填入第三方镜像仓库的账号。

      docker-password

      xxx

      请填入第三方镜像仓库的密码

      docker-email

      example@123.com

      请填入第三方镜像仓库的邮箱,非必填项。

      回显结果如下:

      secret/test created
    2. 执行以下命令,检查密钥是否创建成功。
      kubectl get secret

      回显结果如下,则说明该密钥已成功创建。

      NAME             TYPE                             DATA   AGE
      default-secret   kubernetes.io/dockerconfigjson   1      41h
      paas.elb         cfe/secure-opaque                1      41h
      test             kubernetes.io/dockerconfigjson   1      16s

  3. 使用第三方镜像创建工作负载,具体步骤请参见如下。

    1. 执行以下命令,创建YAML文件deployment.yaml,用于配置工作负载,文件名称可自定义。
      vim deployment.yaml
      文件内容如下:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: foo
        namespace: default
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: foo
        strategy:
          type: RollingUpdate
        template:
          metadata:
            labels:
              app: foo
          spec:
            containers:
            - image: www.example.com/janedoe/awesomeapp:v1    # 第三方镜像地址
              imagePullPolicy: Always
              name: foo
            imagePullSecrets:
            - name: test    # 使用上面创建的密钥,作为拉取镜像的身份认证
    2. 执行以下命令,创建工作负载。
      kubectl create -f deployment.yaml

      回显如下,表示已经开始创建工作负载。

      deployment.apps/foo created
    3. 执行以下命令,查看工作负载状态。
      kubectl get deployment

      回显如下,如果工作负载创建的Pod皆为可用状态,则表示创建成功。

      NAME     READY   UP-TO-DATE   AVAILABLE   AGE
      foo      1/1     1            1           4m59s