Кластер Kubernetes в GCloud с koops: отказано в открытом ключе

#kubernetes #google-cloud-platform #kops

#kubernetes #google-облачная платформа #kops

Вопрос:

Я развертываю 2-узловой кластер Kubernetes на GCloud, используя kops со следующими командами:

 kops create cluster part1.k8s.local --zones europe-west3-a --node-count 2 --node-image ubuntu-os-cloud/ubuntu-2004-focal-v20210129 --node-size "e2-standard-2" --ssh-public-key ~/.ssh/id_rsa.pub --state ${KOPS_STATE_STORE}/ --project=${PROJECT}
 
 kops update cluster --name part1.k8s.local --yes --admin
 

Затем я жду, пока кластер будет готов, и получаю внешний IP-адрес одного из узлов, используя:

 kubectl get nodes -o wide
 

Однако, когда я пытаюсь войти в узел, я получаю:

 ssh -i ~/.ssh/id_rsa admin@<PUBLIC_IP>
admin@<PUBLIC_IP>: Permission denied (publickey).
 

Проверка разрешений узлы должны иметь возможность принимать SSH-соединения, и я могу подключаться к виртуальным машинам с помощью пользовательского интерфейса GCloud.

Что я делаю не так? Спасибо!

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

1. Основная причина заключалась в том, что вы использовали неправильный образ в команде? Я вижу, что тот же вопрос был задан на github (вами, исходя из названия github), но он все еще находится в открытом состоянии. Решило ли это изменение эту проблему?

2. Я не думаю, что это проблема «неправильного образа». Основываясь на проблеме с github, они не обновляют другие изображения так часто (а не по умолчанию), а также GCloud находится в стадии бета-тестирования, поэтому эти проблемы ожидаемы.

3. Не могли бы вы поделиться результатами ls ~/.ssh ? Что , если вы попытаетесь использовать ssh usign gcloud compute ssh <instance-1> --zone <VM zone> ? Также какой результат вы получите, если выполните ssh -i ~/.ssh/google_compute_engine USERNAME@EXTERNAL_IP ?

Ответ №1:

Ответ можно найти здесь: https://github.com/kubernetes/kops/issues/10770

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

1. Не могли бы вы уточнить свой ответ и предоставить решение не как ссылку на другой форум? Сообществу будет более заметно, если кто-то еще столкнется с этой проблемой.

Ответ №2:

Я столкнулся с проблемой, когда тестировал некоторые сценарии SSH keys (добавление, удаление, перезапись и т. Д.).

Когда вы входите в GKE консоль, ваши ssh keys данные сохраняются ~/.ssh . Если папка пуста, эти ключи будут созданы при подключении к виртуальной машине (google_compute_engine и google_compute_engine.pub).

 $ ls ~/.ssh
google_compute_engine  google_compute_engine.pub  google_compute_known_hosts  known_hosts
 

Информация о SSH Key также хранится в вашем проекте. Вы можете найти его в меню навигации> Вычислительный движок> Метаданные. Затем выберите вкладку SSH Keys , чтобы просмотреть экземпляр SSH keys .

Дополнительную информацию о SSH Keys можно найти в разделе Управление ключами SSH в руководстве по метаданным.

Если вы столкнетесь с подобной проблемой, вы можете удалить SSH key из пользовательского интерфейса, удалить google_compute_engine и google_compute_engine.pub . Пока вы хотите подключиться SSH к компьютеру, GKE попросит вас создать новый SSH-ключ, и проблема с Permission denied (publickey) ним должна быть исправлена.

Команды, которые следует использовать ssh для GCE виртуальной машины, — это gcloud ssh

 gcloud compute ssh <instance-name> --zone <zone>
 

Почему?

gcloud compute ssh — это тонкая оболочка вокруг команды ssh (1), которая обеспечивает аутентификацию и преобразование имени экземпляра в IP-адрес.

Кроме того, если вы столкнетесь с другими SSH проблемами GKE , вы можете ознакомиться с руководством по устранению неполадок SSH.