#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 usigngcloud 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.