使用私有镜像创建工作负载
私有镜像指位于私有仓库中的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: apps/v1
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,用于拉取不同私有仓库的私有镜像。
3. 使用仓库访问凭证
在创建工作负载时,在高级设置里可以添加仓库访问凭证以使用私有镜像。
点击“+添加仓库访问凭证”,使用已有凭证或新建凭证,新建凭证需要填写凭证名称、仓库地址、用户名、密码。