"kubectl" не подключается к кластеру AWS EKS с моей локальной рабочей станции Windows
Я пытаюсь настроить кластер EKS AWS и хочу подключить этот кластер с моей локальной рабочей станции Windows. Не в состоянии соединить это. Вот шаги, которые я сделал;
- Создайте роль службы aws (консоль aws -> IAM -> Роли -> нажмите "Создать роль" -> выберите роль службы AWS "EKS" -> дайте имя роли "eks-role-1")
- Создайте другого пользователя в IAM с именем "eks" для программного доступа. это поможет мне подключить мой кластер EKS с моей локальной рабочей станции Windows. Политика, которую я добавил в нее, это "AmazonEKSClusterPolicy", "AmazonEKSWorkerNodePolicy", "AmazonEKSServicePolicy", "AmazonEKS_CNI_Policy".
- Следующий кластер EKS был создан с ролью АРН, который был создан на Шаге 1. Наконец EKS кластер был создан в консоли aws.
- На моей локальной рабочей станции Windows я скачал "kubectl.exe" и "aws-iam-authenticator.exe" и выполнил настройку "aws", используя accesskey и токен из шага № 2 для пользователя "eks". После настройки "~/.kube/config"; я побежал ниже команды и получаю ошибку, как это:
Command:kubectl.exe get svc
output:
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Unable to connect to the server: getting credentials: exec: exit status 1
Не уверен, что здесь неправильная настройка. Может кто-нибудь, пожалуйста, помогите? Я знаю некоторые места, где говорится, что вы должны использовать того же пользователя AWS для подключения кластера (EKS). Но как я могу получить accesskey и токен для aws assign-role (шаг № 2: eks-role-1)?
4 ответа
Для людей, попавших в это, может быть, вы предоставите экс с профилем.
EKS не добавляет профиль в kubeconfig.
Решение:
- экспорт учетных данных AWS
$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=ssssssssss
- Если вы уже настроили учетные данные AWS. Попробуйте экспортировать AWS_PROFILE
$ export AWS_PROFILE=ppppp
- Аналогично 2, но вам нужно сделать только один раз. Отредактируйте свой kubeconfig
users:
- name: eks # This depends on your config.
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "general"
env:
- name: AWS_PROFILE
value: "<YOUR_PROFILE_HERE>" #
Добавляем еще один вариант.
Вместо того, чтобы работать с aws-iam-Authenticator, вы можете изменить команду на
aws
и заменить
args
как показано ниже:
- name: my-cluster
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args: #<--- Change the args
- --region
- <YOUR_REGION>
- eks
- get-token
- --cluster-name
- my-cluster
command: aws #<--- Change to command to aws
env:
- name: AWS_PROFILE
value: <YOUR_PROFILE_HERE>
Я думаю, что получил ответ на этот вопрос; хочу записать здесь, чтобы люди извлекли выгоду из этого. Когда вы впервые создаете EKS кластер; проверьте, из чего вы создаете (проверьте настройки пользователя веб-консоли aws). Даже если вы создаете из сценария CFN, также назначьте другую роль для создания кластера. Вы должны получить доступ к CLI для пользователя, чтобы начать доступ к вашему кластеру из инструмента kubectl. Как только вы получите доступ в первый раз (этот пользователь будет по умолчанию иметь доступ администратора); вам может потребоваться добавить другого пользователя IAM в администратор кластера (или другую роль) с помощью congifMap; только тогда вы можете переключаться или использовать альтернативного пользователя IAM для доступа к кластеру из командной строки kubectl.
Убедитесь, что файл ~/.aws/credentials содержит ключ AWS и секретный ключ для учетной записи IAM, которая может управлять кластером.
В качестве альтернативы вы можете установить параметры AWS env:
export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=ssssssssss