Apache Tomcat表示支持使用AWS ECR,但它不适用于我。我的节点具有与所有正确权限相关联的EC2实例角色,但protected override void Render(HtmlTextWriter writer)
{
this.RenderContents(writer);
}
会导致kubectl run debug1 -i --tty --restart=Never --image=672129611065.dkr.ecr.us-west-2.amazonaws.com/debug:v2
详情
所有实例都有关联的角色,并且该角色附加了此政策:
failed to "StartContainer" for "debug1" with ErrImagePull: "Authentication is required."
kubelet日志看起来像:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
],
"Resource": "*"
}]
}
答案 0 :(得分:2)
从这些日志中,我怀疑三件事之一:
CopySubresourceRegion
arg。答案 1 :(得分:1)
我认为你还需要为ecr图像配置图像拉秘密。您可以通过以下链接获取详细信息。
http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod
http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_GetStarted.html
https://github.com/kubernetes/kubernetes/issues/499
1)检索可用于向注册表验证Docker客户端的docker login命令:
aws ecr get-login --region us-east-1
2)运行上一步返回的docker login命令。
3)Docker登录密码已保存/root/.dockercfg
4)编码docker配置文件
echo $(cat /root/.dockercfg) | base64 -w 0
5)根据旧格式将结果复制并粘贴到秘密YAML:
apiVersion: v1
kind: Secret
metadata:
name: aws-key
type: kubernetes.io/dockercfg
data:
.dockercfg: <YOUR_BASE64_JSON_HERE>
6)使用此aws-key秘密访问图像
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: aws-key
答案 2 :(得分:0)
通常,如果您更改InstanceProfile的权限,它们会立即生效。但是,Kubelet必须有某种设置阶段,需要已经设置权限。我完全退回了我的CloudFormation堆栈,以便使用新的权限启动并启动。我现在可以毫无问题地使用ECR图像了。