镜像
简介
用户可以通过华为云镜像仓库服务SWR或者第三方镜像仓库来管理业务镜像。本章节将介绍CCE+bursting插件场景中,涉及到镜像相关的使用场景及用法。通过阅读本章用户可以在CCE+bursting插件场景中:
使用SWR拉取用户业务镜像
- 方式一:通过console选取SWR镜像
- 用户镜像上传SWR。使用方式请参考:SWR官方文档。
- 在华为云CCE控制台创建负载选择镜像。
- 对接到SWR中的镜像。请确保您的SWR仓库中已正确上传了镜像,SWR服务使用详情请参见:SWR官方文档。
- 方式二:通过在CCE集群node选取SWR镜像
- 登录CCE集群节点。
- 查看SWR镜像仓库中的镜像地址。
- 配置工作负载yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' # 弹性到CCI spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - image: swr.***.com/cci-test/nginx:1.0.0.x86_64_test name: container-0 resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi volumeMounts: [] imagePullSecrets: - name: default-secret
- 部署工作负载。
kubectl apply -f dep.yaml
使用第三方镜像拉取用户业务镜像
- 使用CCI提供的工具创建第三方镜像仓库认证secret。
imagepull-secret-generator --ak=$ak --sk=$sk --private-user=$user --private-password=$password --output-file-path=my-imagepull-secret.json --project-name=region --secret-name=my-imagepull-secret --swr-address=swr.***.com
登录CCE集群节点,为集群创建secret。kubectl apply -f my-imagepull-secret.json
- 创建负载,使用secret。
在spec.imagePullSecrets中指定第三方仓库认证secret。
apiVersion: apps/v1 kind: Deployment metadata: labels: app: test-imagepull virtual-kubelet.io/burst-to-cci: enforce name: test-imagepull spec: replicas: 1 selector: matchLabels: app: test-imagepull template: metadata: labels: app: test-imagepull spec: containers: - image: xxx/my-image:latest imagePullPolicy: Always name: nginx resources: limits: cpu: 1 memory: 2Gi requests: cpu: 1 memory: 2Gi imagePullSecrets: - name: my-imagepull-secret
混合使用华为云SWR + 第三方镜像仓拉取用户业务镜像
操作场景:
在某些情况下,用户在CCE的工作负载拉取第三方镜像仓库的镜像,拉取的镜像可以同步到SWR服务,当发生业务波峰时,弹性到CCI的工作负载使用SWR镜像,可以极大提高镜像拉取效率,帮助用户更丝滑应对业务波峰。
操作指导:
为配置工作负载yaml配置annotation,示例值如下所示:
"coordinator.cci.io/image-replacement": '[ {"repositoryPrefix":"harbor.domain","replaceWith":"swr.***.com/org1"}, {"repositoryPrefix":"","replaceWith":"swr.***.com/org1"}, {"repositoryPrefix":"harbor.domain/a/b/c/d","replaceWith":"swr.***.com/org2"} ]'
- 配置策略执行无先后顺序。
- 替换策略可以配置多条,各个策略repositoryPrefix值不允许重复。
替换规则key |
字段含义 |
字段说明 |
---|---|---|
repositoryPrefix |
用户希望被匹配并被替换的镜像前缀字段。 |
|
replaceWith |
用户希望替换成的镜像前缀字段。 |
|
annotation |
替换前 |
替换后 |
说明 |
---|---|---|---|
"coordinator.cci.io/image-replacement": '[ {"repositoryPrefix":"harbor.domain","replaceWith":"swr.***.com/org1"} ]' |
containers: - name: container-0 image: 'harbor.domain/ubuntu:latest' |
containers: - name: container-0 image: 'swr.***.com/org1/ubuntu:latest' |
repositoryPrefix匹配第三方仓库域名场景。 |
"coordinator.cci.io/image-replacement": '[ {"repositoryPrefix":"","replaceWith":"swr.***.com/org1"} ]' |
containers: - name: container-1 image: 'nginx:latest' |
containers: - name: container-1 image: 'swr.***.com/org1/nginx:latest' |
repositoryPrefix为空场景。 |
"coordinator.cci.io/image-replacement": '[ {"repositoryPrefix":"harbor.domain/a/b/c/d","replaceWith":"swr.***.com/org2"} ]' |
containers: - name: container-2 image: 'harbor.domain/a/b/c/d/redis:latest' |
containers: - name: container-2 image: 'swr.***.com/org2/redis:latest' |
repositoryPrefix匹配第三方仓库域名+组织目录场景。 |