首页 > 解决方案 > 使用 helm 和 Kubernetes 在本地运行 ECR 映像

问题描述

我是 Kubernetes 新手,作为我自己的教程,我一直致力于使用 helm (v3) 将一个基本项目部署到 Kubernetes。我在 AWS 的 ECR 中有一张图片以及该项目的本地掌舵图。但是,我正在努力使用 Kubernetes 运行我的图像。

我的图像设置正确。如果我在本地尝试类似docker run my_image_in_ecr的操作,它会按预期运行(在本地配置我的 IAM 访问凭证之后)。我的掌舵图已正确处理,并且在我的图像地图中,它指定:

image:
  repository: my_image_in_ecr
  tag: latest
  pullPolicy: IfNotPresent

当我尝试使用 helm 进行部署时,我遇到了问题。我的理解是用 helm 运行我的程序,我应该:

  1. 在我的图表上运行 helm install

  2. 在我的新 kubernetes pod 中运行映像

但是当我查看我的 kubernetes pod 时,它们似乎永远不会启动和运行。

hello-test1-hello-world-54465c788c-dxrc7           0/1     ImagePullBackOff    0          49m
hello-test2-hello-world-8499ddfb76-6xn5q           0/1     ImagePullBackOff    0          2m45s
hello-test3-hello-world-84489658c4-ggs89           0/1     ErrImagePull        0          15s

这些 pod 的日志如下所示:

Error from server (BadRequest): container "hello-world" in pod "hello-test3-hello-world-84489658c4-ggs89" is waiting to start: trying and failing to pull image

由于我不知道如何使用 Kubernetes 正确设置 imagePullSecrets,我预计这会失败。但我期待一个不同的错误消息,例如错误的身份验证凭据。

  1. 如何解决图片拉取错误?这个问题甚至与我的图像在 ecr 中的事实无关吗?
  2. 如何正确设置凭据(例如 imagePullSecrets)以授权从 ecr 中提取图像?我遵循了一些指南,例如这个这个,但是对于如何将这些信息转换为 ecr 的正确授权配置感到困惑。

标签: amazon-web-servicesdockerkuberneteskubernetes-helmkubectl

解决方案


如何正确设置凭据(例如 imagePullSecrets)以授权从 ecr 中提取图像?

传统的方法是授予节点一个包含IAM Permissions的实例角色,确保您已设置 on , , and (如果您在 AWS 中使用 kubernetes 进行任何操作,您肯定希望正确启用和配置),然后自动与 ECR 协调到 Just Work™ecr:*--cloud-provider=awsapiservercontroller-managerkubeletkubelet

该信息显示在您引用的页面上,在使用 Amazon Elastic Container Registry的标题下,但不清楚您是否阅读了它并且不理解,或者阅读了它但它不适用于您,或者没有在页面下方走得那么远


推荐阅读