使用 helm 和 Kubernetes 在本地运行 ECR 镜像

问题描述 投票:0回答:2

我是 Kubernetes 新手,作为我自己的教程,我一直致力于使用 helm (v3) 将一个基本项目部署到 Kubernetes。 我在 AWS 的 ECR 中有一个图像以及该项目的本地 helm 图表。 然而,我正在努力使用 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 提取映像?我遵循了一些指南,例如 this onethis one,但对如何将此信息转换为 ecr 的正确授权配置感到困惑。
amazon-web-services docker kubernetes kubernetes-helm kubectl
2个回答
1
投票

如何正确设置凭据(例如 imagePullSecrets)来授权从 ecr 拉取镜像?

传统的方法是授予节点一个实例角色,其中包括

ecr:*
IAM 权限,确保您已在
--cloud-provider=aws
apiserver
controller-manager
上设置了
kubelet
(如果您正在这样做) AWS 内任何带有 kubernetes 的东西,您肯定希望正确启用和配置),然后
kubelet
将自动与 ECR 协调以实现 Just Work™

该信息出现在您引用的页面上,标题为 Using Amazon Elastic Container Registry 下,但不清楚您是否阅读了该信息但不理解,或者阅读了它但它不适用于您,或者没有到达页面那么远


0
投票

如果您在 AWS 上使用 EKS,您可以创建 k8s 服务帐户,为您的 pod 分配 IAM 角色权限。

这是供您开始使用的 AWS 文档 https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html

© www.soinside.com 2019 - 2024. All rights reserved.