amazon-web-services - aws Ec2 容器注册表(使用 kubernetes 部署时,由于身份验证凭据而无法提取映像)
问题描述
- 我使用 kubeadm init 创建了集群,甚至提供了配置文件来将云提供商定义为 aws。
- 我已经为 ECR 的 IAM 角色提供了所需的权限,并且我能够使用 docker pull 拉取图像。
- 只是当我通过 kubernetes 部署我的 pod 时,它无法提取图像。
有什么我想念的吗?
以下是 POD 的说明。
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m default-scheduler Successfully assigned red to ip-192-31-94-118.ec2.internal
Normal SuccessfulMountVolume 4m kubelet, ip-192-31-94-118.ec2.internal MountVolume.SetUp succeeded for volume "default-token-fv9mk"
Normal SandboxChanged 4m kubelet, ip-192-31-94-118.ec2.internal Pod sandbox changed, it will be killed and re-created.
Normal Pulling 3m (x3 over 4m) kubelet, ip-192-31-94-118.ec2.internal pulling image "ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/testapp:latest"
Warning Failed 3m (x3 over 4m) kubelet, ip-192-31-94-118.ec2.internal Failed to pull image "ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/testapp:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/v2/testapp/manifests/latest: no basic auth credentials
Warning Failed 3m (x3 over 4m) kubelet, ip-192-31-94-118.ec2.internal Error: ErrImagePull
Normal BackOff 2m (x7 over 4m) kubelet, ip-192-31-94-118.ec2.internal Back-off pulling image "ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/testapp:latest"
Warning Failed 2m (x7 over 4m) kubelet, ip-192-31-94-118.ec2.internal Error: ImagePullBackOff
解决方案
当您在 AWS 上使用 ECR 配置 Kubernetes 时,您可能会在两个地方绊倒:
IAM 角色:
确保为所有Kubernetes 节点添加权限以从 ECR 中提取图像。
云提供商:确保您的 kubelet 使用--cloud-provider=aws
参数运行。
在您的情况下,您确定一切运行正常,因此您错过了某些 Kubernetes 节点上的 IAM 权限。
推荐阅读
- firebase - Firestore 超时
- javascript - 大量的 mongodb 动态集合对项目来说是一件坏事,并且对性能有影响吗
- c - 当应用于链表中的指针时,AND 运算符是什么意思?
- c# - 如何使用@Html.ActionLink 显示带参数的索引视图?
- javascript - 用服务器端渲染反应路由器模式路由
- javascript - 奇怪的javascript循环行为
- android-fragments - 在片段中使用 RecyclerView 时询问权限时应用程序崩溃
- facebook - 如何通过facebook api获取其他人对我的帖子的评论
- image - 使用 imagesc 函数查看矩阵的不同平面
- javascript - Javascript 无法提醒字典