容器引擎CCE

    CCE集群中使用私有镜像实践

    私有镜像指位于私有仓库中的Docker镜像,用户需要使用仓库用户名密码登入(docker login)后才能拉取。在CCE集群中,需要为Pod配置imagePullSecrets,才能够在集群中使用私有镜像启动Pod中的容器。

    1. 创建用于私有镜像拉取的secret (imagePullSecrets)

    使用kubectl命令行创建,需要提供

    • 镜像仓库登录用户名
    • 镜像仓库登录密码
    • 邮件地址
    • 镜像仓库地址(可选)

      kubectl create secret docker-registry <secret名称> --docker-username=<镜像仓库用户名> --docker-password=<镜像仓库密码> --docker-email=<邮件地址> --docker-server=<镜像仓库地址(可选)>

    对于存储在百度智能云镜像仓库(镜像地址为hub.baidubce.com/<namespace>/<image>:<tag>)的私有镜像,镜像仓库地址参数须填写为--docker-server='https://hub.baidubce.com'

    注意:

    • secret需与引用该secret的pod在同一个k8s命名空间内。

    创建完毕后,可以通过kubectl get secret查看到一个类型为 kubernetes.io/dockerconfigjson 的secret被创建。

    $ kubectl get secret	
    NAME                  TYPE                                  DATA      AGE	
    default-token-bx894   kubernetes.io/service-account-token   3         4d	
    private-repo-auth     kubernetes.io/dockerconfigjson        1         2m	

    2. 在pod spec中指定拉取镜像的secret

    pod.spec.imagePullSecrets 中指定secret的名称,即可在pod中使用相应的私有镜像。

    以创建一个Deployment为例,假设已经在default命名空间中通过上述方式创建了名为private-repo-auth的secret,对应的Deployment yaml文件如下:

    apiVersion: extensions/v1beta1	
    kind: Deployment	
    metadata:	
      name: my-nginx	
    spec:	
      replicas: 1	
      selector:	
        matchLabels:	
          app: my-nginx	
      template:	
        metadata:	
          name: my-nginx	
          labels:	
            app: my-nginx	
        spec:	
          imagePullSecrets:	
          - name: private-repo-auth	
          containers:	
          - name: my-nginx	
            image: nginx	

    注意:

    • 可以在同一个pod中指定多个拉取镜像的secret,用于拉取不同私有仓库的私有镜像。
    上一篇
    CCE-访问公网实践
    下一篇
    CCE集群网络说明及规划