管理镜像
使用 Alauda Container Platform,你可以与镜像进行交互。具体取决于镜像仓库所在位置、这些仓库所需的认证要求,以及你希望构建和部署如何运行。
镜像拉取策略
pod 中的每个容器都有一个容器镜像。在创建镜像并将其推送到 registry 之后,你就可以在 pod 中引用它。
镜像拉取策略概览
当 Alauda Container Platform 创建容器时,会使用容器的 imagePullPolicy 来判断在启动容器之前是否应先拉取镜像。imagePullPolicy 有三种可能的值:
imagePullPolicy 值表:
如果未指定容器的 imagePullPolicy 参数,Alauda Container Platform 会根据镜像标签进行设置:
- 如果标签为 latest,Alauda Container Platform 会将
imagePullPolicy默认为 Always。 - 否则,Alauda Container Platform 会将
imagePullPolicy默认为 IfNotPresent。
使用镜像拉取 Secret
如果你正在使用 Alauda Container Platform 镜像 registry,那么你的 pod ServiceAccount 应该已经具备正确的权限,无需额外操作。
不过,对于其他场景,例如跨 Alauda Container Platform 项目引用镜像,或从受保护的 registry 拉取镜像,则需要额外的配置步骤。
允许 pod 引用来自其他受保护 registry 的镜像
要从其他私有或受保护的 registry 拉取容器镜像,你必须使用容器客户端凭据(例如 Docker)创建一个 pull secret,并将其添加到你的 ServiceAccount 中。
Docker 使用配置文件来存储登录受保护或不受保护 registry 的认证信息:
默认情况下,Docker 使用 $HOME/.docker/config.json。
如果你之前已登录到受保护或不受保护的 registry,这些文件会存储你的认证信息。
创建 pull secret
你可以获取镜像拉取 Secret,用于从私有容器镜像 registry 或 repository 拉取镜像。你可以参考 从私有 Registry 拉取镜像。
在工作负载中使用 pull secret
你可以通过以下方式之一使用 pull secret,使工作负载能够从私有 registry 拉取镜像:
- 将 Secret 关联到一个
ServiceAccount,这会自动将该 Secret 应用到使用该 ServiceAccount 的所有 pod。 - 在 pod 规范中定义
imagePullSecrets,这对 GitOps 或 ArgoCD 等环境很有用。
你可以通过将 Secret 添加到你的 ServiceAccount 中来为 pod 拉取镜像。请注意,ServiceAccount 的名称应与 pod 使用的 ServiceAccount 名称一致。
示例输出:
除了将 Secret 关联到 ServiceAccount,你也可以在 pod 或工作负载定义中直接引用它。这对 ArgoCD 等 GitOps 工作流非常有用。例如:
pod 规范示例:
ArgoCD 工作流示例: