使用私有镜像创建工作负载
概述
私有镜像指位于私有仓库中的 Docker 镜像,用户需要使用仓库用户名密码登录(docker login)后才能拉取。在 CCE 集群中,需要为 Pod 配置 imagePullSecrets,才能在集群中使用私有镜像启动 Pod 中的容器。
前提条件
- 已具备目标 CCE 集群访问权限,并可通过
kubectl连接目标集群。 - 已准备可用的镜像仓库账号信息(用户名、密码、仓库地址)。
- 已确认目标命名空间具备创建和查询 Kubernetes
Secret的权限。
1. 创建用于私有镜像拉取的 secret (imagePullSecrets)
导航路径: 产品服务->容器服务 CCE->集群管理->通过 kubectl 连接集群
使用 kubectl 命令行创建 docker-registry 类型的 Secret。
| 参数 | 必填 | 说明 |
|---|---|---|
--docker-username |
是 | 镜像仓库登录用户名。 |
--docker-password |
是 | 镜像仓库登录密码。 |
--docker-server |
是 | 镜像仓库地址。 |
--docker-email |
否 | 邮件地址(可选)。 |
1kubectl create secret docker-registry <secret 名称> \
2 --docker-username=<镜像仓库用户名> \
3 --docker-password=<镜像仓库密码> \
4 --docker-server=<镜像仓库地址> \
5 --docker-email=<邮件地址(可选)> \
6 -n <命名空间>
对于存储在百度智能云 CCR 企业版镜像仓库(镜像地址为 {实例ID}-vpc(或pub).cnc.{region}.baidubce.com/<namespace>/<image>:<tag>)的私有镜像,镜像仓库地址参数须填写为 --docker-server='https://仓库地址'。
注意:
- secret需与引用该secret的pod在同一个k8s命名空间内。
创建完毕后,可以通过 kubectl get secret 查看到一个类型为 kubernetes.io/dockerconfigjson 的 secret 被创建。
1$ kubectl get secret -n <命名空间>
2NAME TYPE DATA AGE
3<secret 名称> kubernetes.io/dockerconfigjson 1 2m
2. 在 pod spec 中指定拉取镜像的 secret
导航路径: 产品服务->容器服务 CCE->集群管理->通过 kubectl 连接集群
在 pod.spec.imagePullSecrets 中指定 secret 的名称,即可在 pod 中使用相应的私有镜像。
以创建一个 Deployment 为例,假设已经在 default 命名空间中通过上述方式创建了名为 private-repo-auth 的 secret,对应的 Deployment YAML 文件如下:
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: my-nginx
5spec:
6 replicas: 1
7 selector:
8 matchLabels:
9 app: my-nginx
10 template:
11 metadata:
12 name: my-nginx
13 labels:
14 app: my-nginx
15 spec:
16 imagePullSecrets:
17 - name: private-repo-auth
18 containers:
19 - name: my-nginx
20 image: nginx
注意:
- 可以在同一个pod中指定多个拉取镜像的secret,用于拉取不同私有仓库的私有镜像。
3. 使用仓库访问凭证
导航路径: 产品服务->容器服务 CCE->集群列表->目标集群->工作负载->无状态->新建无状态
在创建工作负载时,在高级设置里可以添加仓库访问凭证以使用私有镜像。
点击 【+添加仓库访问凭证】,使用已有凭证或新建凭证。新建凭证需要填写以下信息:
| 参数 | 必填 | 说明 |
|---|---|---|
| 凭证名称 | 是 | 用于标识仓库访问凭证。 |
| 仓库地址 | 是 | 私有镜像仓库地址。 |
| 用户名 | 是 | 镜像仓库登录用户名。 |
| 密码 | 是 | 镜像仓库登录密码。 |



评价此篇文章
