Amazon web services Kubernetes/kops:将EBS卷附加到实例时出错。您无权执行此操作。错误403
我在kops提供的AWS集群上测试了kubernetes部署和EBS卷装载。这是部署yml文件:Amazon web services Kubernetes/kops:将EBS卷附加到实例时出错。您无权执行此操作。错误403,amazon-web-services,amazon-ec2,kubernetes,kubectl,kops,Amazon Web Services,Amazon Ec2,Kubernetes,Kubectl,Kops,我在kops提供的AWS集群上测试了kubernetes部署和EBS卷装载。这是部署yml文件: apiVersion: extensions/v1beta1 kind: Deployment metadata: name: helloworld-deployment-volume spec: replicas: 1 template: metadata: labels: app: helloworld spec: contai
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: helloworld-deployment-volume
spec:
replicas: 1
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: k8s-demo
image: wardviaene/k8s-demo
ports:
- name: nodejs-port
containerPort: 3000
volumeMounts:
- mountPath: /myvol
name: myvolume
volumes:
- name: myvolume
awsElasticBlockStore:
volumeID: <volume_id>
看起来这只是一个权限问题。好的,我检查了节点角色IAM
->角色->节点的策略。
发现在没有允许操作卷的操作的情况下,默认情况下只有ec2:descripbeinstances
操作。因此,我添加了AttachVolume
和DetachVolume
操作:
{
"Sid": "kopsK8sEC2NodePerms",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": [
"*"
]
},
但这没用。我仍然会遇到这样的错误:
Attach failed for volume "myvolume" : Error attaching EBS volume "XXX" to instance "YYY": "UnauthorizedOperation: You are not authorized to perform this operation.
我遗漏了什么吗?我找到了解决办法。它被描述了
在kops 1.8.0-beta.1中,主节点要求您使用以下内容标记AWS卷:
KubernetesCluster
:
因此,有必要使用awscli
创建带有该标记的EBS卷:
aws ec2 create-volume --size 10 --region eu-central-1 --availability-zone eu-central-1a --volume-type gp2 --tag-specifications 'ResourceType=volume,Tags=[{Key=KubernetesCluster,Value=<clustername-here>}]'
aws ec2创建卷--大小10--区域eu-central-1--可用区eu-central-1a--卷类型gp2--标记规范'ResourceType=volume,标记=[{Key=KubernetesCluster,值=}]'
或者您可以在EC2
->卷中手动标记它
->您的卷
->标记
就这样
编辑:
正确的集群名称可以在EC2实例标记中找到,EC2实例标记是集群的一部分。键相同:KubernetesCluster
Thx用于解决方案。但我有新的错误。无法为pod“XXX”装载卷:等待卷为pod“XXX”/“XXX”附加/装载的超时已过期。未连接/未安装卷的列表=[my volume]。你经历过同样的错误吗?很有趣。不,我没有遇到过这样的问题,我甚至不知道它与什么有关。我找到了解决办法。问题是由xfs FS引起的。此错误与kubernetes问题有关。
aws ec2 create-volume --size 10 --region eu-central-1 --availability-zone eu-central-1a --volume-type gp2 --tag-specifications 'ResourceType=volume,Tags=[{Key=KubernetesCluster,Value=<clustername-here>}]'