Запуск kubectl на виртуальной машине

#kubernetes #google-kubernetes-engine #kubectl

#kubernetes #google-kubernetes-engine #kubectl

Вопрос:

Я пытаюсь kubectl запустить виртуальную машину. Я выполнил приведенные здесь шаги и могу выполнить установку. Я скопировал свою локальную конфигурацию kubernetes (из /Users/me/.kube/config ) на виртуальную машину в .kube каталоге. Однако, когда я запускаю любую команду, например, kubectl get nodes она возвращает error: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information

Есть ли способ, которым я могу работать kubectl на виртуальной машине?

Комментарии:

1. Где размещен ваш кластер? это GKE? Похоже, что он ожидает, что вы выполните gcloud auth login .

2. Вы могли gcloud auth login бы с виртуальной машины, но это будет использовать вашу личную идентификацию для всех вызовов, выполняемых с этой виртуальной машины. Безопаснее создать учетную запись службы для программного доступа (например, если она когда-либо скомпрометирована, вы можете просто отозвать разрешения учетной записи службы).

Ответ №1:

Чтобы использовать kubectl для взаимодействия с кластером Google Container Engine на виртуальной машине, отличной от Google, вы можете создать управляемую пользователем учетную запись службы IAM и использовать ее для аутентификации в своем кластере:

 # Set these variables for your project
PROJECT_ID=my-project
SA_NAME=my-new-serviceaccount
SA_EMAIL=$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
KEY_FILE=~/serviceaccount_key.json

# Create a new GCP IAM service account.
gcloud iam service-accounts create $SA_NAME

# Download a json key for that service account.
gcloud iam service-accounts keys create $KEY_FILE --iam-account $SA_EMAIL

# Give that service account the "Container Engine Developer" IAM role for your project.
gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SA_EMAIL --role roles/container.developer

# Configure Application Default Credentials (what kubectl uses) to use that service account.
export GOOGLE_APPLICATION_CREDENTIALS=$KEY_FILE
  

А затем продолжайте использовать kubectl, как обычно.

Комментарии:

1. Откуда ~/serviceaccount_key.json берется? Редактировать: нашел его API CONSOLE CREDENTIALS здесь: developers.google.com/identity/protocols /…