使用 Alauda Container Platform,您可以根据镜像仓库的位置、这些仓库的认证要求,以及您希望构建和部署的行为方式来管理镜像。
Pod 中的每个容器都有一个容器镜像。在您创建镜像并将其推送到仓库后,即可在 Pod 中引用该镜像。
当 Alauda Container Platform 创建容器时,会使用容器的 imagePullPolicy 来决定是否在启动容器之前拉取镜像。imagePullPolicy 有三种可能的取值:
表格 imagePullPolicy 取值说明:
| Value | Description |
|---|---|
| Always | 始终拉取镜像。 |
| IfNotPresent | 仅当节点上不存在该镜像时才拉取。 |
| Never | 从不拉取镜像。 |
如果未指定容器的 imagePullPolicy 参数,Alauda Container Platform 会根据镜像标签设置默认值:
如果您使用的是 Alauda Container Platform 的镜像仓库,则您的 Pod 服务账户应已具备正确权限,无需额外操作。
但在其他场景下,例如跨 Alauda Container Platform 项目引用镜像或从受保护的仓库拉取镜像时,则需要额外配置。
要从其他私有或受保护的仓库拉取受保护的容器镜像,必须使用容器客户端凭据(如 Docker)创建拉取密钥,并将其添加到服务账户中。
Docker 使用配置文件存储登录受保护或不安全仓库的认证信息:
默认情况下,Docker 使用 $HOME/.docker/config.json。
如果您之前登录过受保护或不安全的仓库,这些文件会存储您的认证信息。
您可以获取镜像拉取密钥,以便从私有容器镜像仓库或仓库中拉取镜像。详情请参阅 Pull an Image from a Private Registry。
您可以通过以下方法之一使用拉取密钥,使工作负载能够从私有仓库拉取镜像:
ServiceAccount,自动将密钥应用于使用该服务账户的所有 Pod。imagePullSecrets,适用于 GitOps 或 ArgoCD 等环境。您可以通过将密钥添加到服务账户来为 Pod 拉取镜像。请注意,服务账户的名称应与 Pod 使用的服务账户名称匹配。
示例输出:
除了将密钥关联到服务账户外,您还可以直接在 Pod 或工作负载定义中引用该密钥。这对于 ArgoCD 等 GitOps 工作流非常有用。例如:
Pod 规范示例:
ArgoCD 工作流示例: