amazon-web-services - 使用 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 运行我的程序,我应该:
在我的图表上运行 helm install
在我的新 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,我预计这会失败。但我期待一个不同的错误消息,例如错误的身份验证凭据。
解决方案
如何正确设置凭据(例如 imagePullSecrets)以授权从 ecr 中提取图像?
传统的方法是授予节点一个包含IAM Permissions的实例角色,确保您已设置 on , , and (如果您在 AWS 中使用 kubernetes 进行任何操作,您肯定希望正确启用和配置),然后自动与 ECR 协调到 Just Work™ecr:*
--cloud-provider=aws
apiserver
controller-manager
kubelet
kubelet
该信息显示在您引用的页面上,在使用 Amazon Elastic Container Registry的标题下,但不清楚您是否阅读了它并且不理解,或者阅读了它但它不适用于您,或者没有在页面下方走得那么远
推荐阅读
- java - 根据状态仅打印一次作业状态
- garmin - Garmin Connect IQ 自定义数据字段的区域时间
- xpath - Robotframework xpath如何定位元素
- python - OpenCV 3.4.3 是否与 Python 3.6.7 兼容?
- excel - 每当我尝试粘贴时,Excel vba 粘贴特殊方法都会失败
- mongodb - 如何列出集合中的所有文档但显示单个属性?
- bash - 在别名中执行 bash 函数时的区别
- azure - 我可以让 Azure 应用程序网关充当转发代理吗?
- javascript - 如何让 onclick 元素与 requirejs 模块一起使用
- scala - Scala - 创建一个新列表并从现有列表中更新特定元素