Я протестировал развертывание Kubernetes с монтированием тома EBS в кластере AWS, подготовленном kops. Это файл развертывания yml:
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>
После kubectl create -f <path_to_this_yml>
в описании модуля появилось следующее сообщение:
Attach failed for volume "myvolume" : Error attaching EBS volume "XXX" to instance "YYY": "UnauthorizedOperation: You are not authorized to perform this operation. status code: 403
Похоже, это просто проблема с разрешением. Хорошо, я проверил политику для роли узла IAM
-> Roles
-> nodes.<my_domain>
и обнаружил, что там, где нет действий, позволяющих манипулировать томами, по умолчанию было только действие ec2:DescribeInstances
. Итак, я добавил действия 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.
Я что-то упускаю?