首页 > 解决方案 > eks worker 节点如何获取 ecr 登录?

问题描述

我们在操作 ecr 时需要登录,例如"aws ecr get-login-password --region ap-east-1 | docker login --username AWS --password-stdin xxxxxxxx.dkr.ecr.ap-east-1.amazonaws.com". 但我发现 eks 工作节点可以直接拉取图像。为什么?节点在某处自动运行此命令?

标签: amazon-eksamazon-ecr

解决方案


如果存在 EC2 相关文件或可以获取凭据,kubelet 似乎会尝试生成 ECR 令牌。请参考以下代码中的 ec2ValidationImpl 和 isEC2。

https://github.com/kubernetes/kubernetes/blob/542829d30d2e48abb802e4f4499dc63dd8076c3d/pkg/credentialprovider/aws/aws_credentials.go#L91-L144

并将生成的令牌添加到 kubelet 中的 dockerconfig 缓存中。

https://github.com/kubernetes/kubernetes/blob/542829d30d2e48abb802e4f4499dc63dd8076c3d/pkg/credentialprovider/aws/aws_credentials.go#L211-L241

我猜这些配置可以在 kubelet 中无需任何身份验证即可提取 ECR 映像。


推荐阅读