kubectl: ошибка: Вы должны войти в систему на сервере (не авторизовано) - PullRequest
0 голосов
/ 30 января 2020

Я создал кластер kops и получил ошибку ниже при входе в кластер.

Журнал ошибок:

*****INFO! KUBECONFIG env var set to /home/user/scripts/kube/kubeconfig.yaml
INFO! Testing kubectl connection....
error: You must be logged in to the server (Unauthorized)
ERROR! Test Failed, AWS role might not be recongized by cluster*****

Использование сценария для iam-аутентификации и вход на сервер с соответствующей ролью перед подключением. Я могу войти на другой сервер, который находится в той же среде. попробовал с версией diff k8s и конфигурацией diff.

KUBECONFIG не имеет никаких проблем и таких же сведений о входе и токене, как в другом кластере. Я вижу токен с помощью команды 'aws -iam-authenticator'

Пролистал большинство статей и не помог

1 Ответ

1 голос
/ 30 января 2020

Кажется, AWS проблема авторизации. При создании кластера только пользователь IAM, который создал кластер, имеет права администратора , поэтому вам может понадобиться сначала добавить своего собственного пользователя IAM.

1- Начните с проверки идентификатора пользователя IAM, неявно используемого во всех командах: aws sts get-caller-identity

Если ваш was-cli установлен правильно, у вас будет вывод, подобный следующему:

{
    "UserId": "ABCDEFGHIJK",
    "Account": "12344455555",
    "Arn": "arn:aws:iam::1234577777:user/Toto"
}

мы будем ссылаться на значение в Account как YOUR_AWS_ACCOUNT_ID на шаге 3. (в этом примере YOUR_AWS_ACCOUNT_ID="12344455555"

2 - После того, как у вас есть этот идентификатор, вы должны добавить его к AWS привязка роли для получения разрешений EKS .

3 - Вам потребуется отредактировать файл ConfigMap, используемый kubectl для добавления вашего пользователя kubectl edit -n kube-system configmap/aws-auth В открытом редакторе создайте имя пользователя вы хотите использовать для ссылки на себя, используя кластер YOUR_USER_NAME (для простоты вы можете использовать то же самое, что и ваше aws имя пользователя, например Toto на шаге 2), вам понадобится это на шаге 4, и использовать aws идентификатор учетной записи (не забудьте оставить кавычки ""), вы нашли его в своей идентификационной информации на шаге 1 YOUR_AWS_ACCOUNT_ID, как показано в разделах mapUsers и mapAccounts.

  mapUsers: |
    - userarn: arn:aws:iam::111122223333:user/ops-user
      username: YOUR_USER_NAME
      groups:
        - system:masters
  mapAccounts: |
    - "YOUR_AWS_ACCOUNT_ID"

4- Наконец, вам нужно создать привязку роли в кластере kubernetes для пользователя, указанного в e ConfigMap

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user YOUR_USER_NAME
...