通过 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 工作流: