使用第三方镜像
第三方镜像是指由除官方镜像仓库和SWR镜像仓库外,其他组织或个人提供的容器镜像。这些镜像通常包含自定义应用程序、工具或特定版本的操作系统,能够满足用户特定的业务需求。在Standard/Turbo集群中,用户可以通过密钥认证的方式拉取第三方镜像,进而创建工作负载,满足业务需要。更多信息,请参见Images | Kubernetes。
前提条件
使用第三方镜像时,请确保Standard/Turbo集群可以正常访问其仓库所在的网络环境,具体分为三种情况:
- 内网访问:当第三方镜像仓库支持内网访问时,存在以下情况:
- 当第三方镜像仓库位于集群所在的VPC内时,Pod可以通过内网访问直接拉取镜像,无需额外配置。
- 当第三方镜像仓库与集群处于同一区域的不同VPC时,可以通过对等连接打通两个VPC之间的网络,之后Pod可以通过内网访问直接拉取镜像。关于对等连接的具体操作,请参见对等连接。
- 公网访问:当第三方镜像仓库支持公网访问时,Pod可以通过公网拉取镜像。此时,需确保Pod具备访问公网的能力。您可以通过以下方式,确保Pod具备访问公网的能力:
当使用公网访问方式拉取镜像时,请确保EIP的带宽充足,以避免因带宽不足导致镜像拉取失败或拉取速度过慢。
- 云专线或VPN访问:当需要使用云下镜像仓库时,您需要通过云专线或VPN的方式,提前将第三方镜像仓库所在的网络环境与集群所在VPC打通。网络环境打通后,无需额外配置。
使用第三方镜像
使用第三方镜像时,需先创建镜像拉取密钥,并在工作负载中引用该密钥以授权访问。本文共提供两种配置方式,即控制台方式和kubectl命令行方式。
本节将详细介绍如何通过控制台创建密钥,并基于该密钥拉取第三方镜像以创建工作负载。
- 如果第三方镜像仓库存在账号和密码,则需要在集群中创建相关密钥,作为拉取镜像的身份凭证。
- 在左侧导航栏中,单击“工作负载”,在右上角单击“创建工作负载”。“创建工作负载”页面中,在“容器配置 > 容器信息 > 基本信息 > 镜像名称”中直接填写第三方镜像地址。并在“镜像访问凭证”中选择1中创建的密钥。
图2 填写第三方镜像地址
- 填写其他参数后,单击“创建工作负载”。待工作负载状态变为运行中时,则说明第三方镜像拉取成功。
- 请参见通过kubectl连接集群,使用kubectl连接集群。
- 如果第三方镜像仓库存在账号和密码,则需要在集群中创建相关密钥,作为拉取镜像的身份凭证。
- 执行以下命令,创建认证密钥。该密钥类型默认为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
- 执行以下命令,检查密钥是否创建成功。
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
- 执行以下命令,创建认证密钥。该密钥类型默认为kubernetes.io/dockerconfigjson类型,表示该密钥是拉取第三方镜像时所需要的认证信息。
- 使用第三方镜像创建工作负载,具体步骤请参见如下。
- 执行以下命令,创建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 # 使用上面创建的密钥,作为拉取镜像的身份认证
- 执行以下命令,创建工作负载。
kubectl create -f deployment.yaml
回显如下,表示已经开始创建工作负载。
deployment.apps/foo created
- 执行以下命令,查看工作负载状态。
kubectl get deployment
回显如下,如果工作负载创建的Pod皆为可用状态,则表示创建成功。
NAME READY UP-TO-DATE AVAILABLE AGE foo 1/1 1 1 4m59s
- 执行以下命令,创建YAML文件deployment.yaml,用于配置工作负载,文件名称可自定义。