Нужна помощь в вопросе монтирования тома с kubernetes

У меня есть кластер kubernetes с поддержкой RBAC, созданный с использованием kops версии 1.8.0-beta.1, я пытаюсь запустить модуль nginx, который должен подключить предварительно созданный том EBS, и модуль должен запуститься. Но получение вопроса как не авторизованного, хотя я и являюсь администратором. Любая помощь будет высоко оценен.

kubectl version Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-09T07:27:47Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-08T18:27:48Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

namespace:default

кошка test-ebs.yml

apiVersion: v1
kind: Pod
metadata:
  name: test-ebs
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /test-ebs
      name: test-volume
  volumes:
  - name: test-volume
    awsElasticBlockStore:
      volumeID: <vol-IDhere>
      fsType: ext4

Я получаю следующую ошибку:

Warning  FailedMount            8m               attachdetach                                        AttachVolume.Attach failed for volume "test-volume" : Error attaching EBS volume "<vol-ID>" to instance "<i-instanceID>": "UnauthorizedOperation: You are not authorized to perform this operation

2 ответа

Решение

В kops 1.8.0-beta.1 мастер-узел требует пометить том AWS с помощью:

KubernetesCluster: <clustername-here>

Если вы создали кластер k8s, используя kops следующим образом:

kops create cluster --name=k8s.yourdomain.com [other-args-here]

Ваш тег на томе EBS должен быть

KubernetesCluster: k8s.yourdomain.com

И политика на master будет содержать блок, который будет содержать:

{
  "Sid": "kopsK8sEC2MasterPermsTaggedResources",
  "Effect": "Allow",
  "Action": [
    "ec2:AttachVolume",
    "ec2:AuthorizeSecurityGroupIngress",
    "ec2:DeleteRoute",
    "ec2:DeleteSecurityGroup",
    "ec2:DeleteVolume",
    "ec2:DetachVolume",
    "ec2:RevokeSecurityGroupIngress"
  ],
  "Resource": [
    "*"
  ],
  "Condition": {
    "StringEquals": {
      "ec2:ResourceTag/KubernetesCluster": "k8s.yourdomain.com"
    }
  }
}

Условие указывает, что master-policy имеет право подключать только тома, которые содержат правильный тег.

Проблема из-за версии kops1.8. Откатился до версии kops v1.7.1. теперь это работает.

Другие вопросы по тегам