使用头盔和Kubernetes在本地运行ECR图像

时间:2019-12-03 01:28:15

标签: amazon-web-services docker kubernetes kubernetes-helm kubectl

我是Kubernetes的新手,作为我自己的教程,我一直在努力为带头盔(v3)的Kubernetes部署一个基本项目。 我在AWS的ECR中有一张图片,以及此项目的本地头盔图表。 但是,我正在努力用Kubernetes运行我的映像。

我的图像设置正确。如果我在本地尝试类似docker run my_image_in_ecr之类的方法,则其行为将与预期的一样(在本地配置IAM访问凭据之后)。 我的头盔图表正确倾斜,并在我的图像图中指定:

image:
  repository: my_image_in_ecr
  tag: latest
  pullPolicy: IfNotPresent

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

  1. 在我的图表上运行头盔安装

  2. 在新的kubernetes容器中运行图像

但是当我看着我的kubernetes吊舱时,它们似乎永远无法启动并运行。

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

这些吊舱的日志如下:

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的正确授权配置感到困惑。

1 个答案:

答案 0 :(得分:1)

  

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

传统方法是向节点授予包含instance roleecr:* IAM Permissions,确保在--cloud-provider=awsapiserver和{{ 1}}(如果您在AWS内部使用kubernetes进行任何操作,您肯定会希望正确启用和配置),然后controller-manager将自动与ECR协调以进行Just Work™

该信息显示在您引用的页面上,标题为Using Amazon Elastic Container Registry,但不清楚您是阅读还是不理解,或者阅读并不适用于您,或者没有深入到页面