Назад | Перейти на главную страницу

Невозможно перечислить сервисы в AWS EKS

Я настраиваю свой первый кластер Kubernetes EKS, следуя Руководство по началу работы но я не могу пройти этап проверки доступа с помощью kubectl get svc. Вместо списка услуг я получаю:

error: the server doesn't have a resource type "svc"

У меня есть aws-iam-authenticator На месте у меня есть правильный доступ и секретный ключ для пользователя с правами администратора AWS, я проверил все, что мог придумать, но не могу понять, что вызывает ошибку.

Убедитесь, что вы используете kubectl с тот же пользователь / роль IAM что вы использовали для создания кластера EKS? Только который Пользователь / роль IAM задана system:masters привилегия в Kubernetes. Если вы используете другую роль, вы увидите эту ошибку, даже если эта другая роль имеет разрешения администратора в ее политике IAM.


Например, если вы создали кластер EKS во время входа в систему с роль IAM в кросс-аккаунте и теперь вы пытаетесь использовать его с другой пользователь IAM это не сработает.

Позже вы можете добавить в EKS дополнительных пользователей IAM, но для начала вам придется использовать роль IAM, которая создала кластер. Например, если вы войдете в компания-логин счет и сменить роль к компания-продукт аккаунт с ролью Админ вам нужно будет обновить kubeconfig соответственно:

users:
- name: arn:aws:eks:ap-southeast-2:{company-prod-id}:cluster/{cluster-name}
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
      - token
      - -i
      - cluster-name
      - -r                                          <<< Add this
      - arn:aws:iam::{company-prod-id}:role/Admin   <<< And this
      env:
      - name: AWS_PROFILE
        value: company-login-profile                <<< Must be your login account

В качестве альтернативы вы можете создать кросс-аккаунт профиль для aws-cli как описано здесь: Как «сменить роль» в aws-cli? В этом случае вам не понадобится -r arn:...:role/Admin в kubeconfig как это уже сделано в ~/.aws/credentials.

После исправления ролей вы сможете запускать kubectl get svc.


Как только вышеуказанное сработает, вы можете Добавление дополнительных пользователей IAM и ролей IAM в EKS / Kubernetes. Я предлагаю вам создать специальную роль, например, EKSAdmin и потребуйте, чтобы ваши пользователи IAM предполагали это для управления кластером.

Надеюсь, это поможет :)