Kubernetes / kops: ошибка при подключении тома EBS к экземпляру. У вас нет прав на выполнение этой операции. Ошибка 403

Я протестировал развертывание 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.

Я что-то упускаю?


person Artsiom Praneuski    schedule 06.01.2018    source источник


Ответы (1)


Я нашел решение. Это описано здесь.

В kops 1.8.0-beta.1 главный узел требует, чтобы вы пометили том AWS:

KubernetesCluster: <clustername-here>

Поэтому необходимо создать том EBS с этим тегом, используя awscli:

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>}]'

или вы можете пометить его вручную в EC2 -> Volumes -> Your volume -> Tags

Вот и все.

ИЗМЕНИТЬ:

Правильное имя кластера можно найти в тегах экземпляров EC2, которые являются частью кластера. Ключ тот же: KubernetesCluster.

person Artsiom Praneuski    schedule 07.01.2018
comment
Спасибо за решение. Но у меня новая ошибка. Невозможно смонтировать тома для модуля XXX: истекло время ожидания подключения / монтирования томов для модуля XXX / XXX. список неподключенных / не подключенных томов = [my-volume]. Была ли у вас такая же ошибка? - person aprisniak; 10.03.2018
comment
Интересно. Нет, с такой проблемой не сталкивался, даже понятия не имею, с чем это связано. - person Artsiom Praneuski; 11.03.2018
comment
Я нашел решение. Проблема возникла из-за xfs FS. Эта ошибка связана с проблемой кубернетов. - person aprisniak; 12.03.2018