it-swarm.com.ru

Как SSH к докеру контейнера в кластере kubernetes?

Я довольно плохо знаком с платформой Google Cloud и Docker и настроил кластер узлов, создал Dockerfile, который копирует репозиторий и запускает Clojure REPL на общедоступном порту. Я могу подключиться к нему из моего IDE и поиграть с моим кодом, круто!

Это REPL, вероятно, должно проходить через SSH, но здесь начинается моя проблема. Я не могу найти подходящее место для SSH в для внесения изменений в репозиторий, в котором Docker запускает REPL:

  • Открытый IP-адрес только предоставляет службу REPL (правильный термин kubernetes?) И не позволяет мне входить в SSH. 
  • Как и конечная точка главного устройства кластера, она выдает ошибку открытого ключа, хотя я следовал за частью Adding or removing SSH keys for all of the instances in your projectздесь .

Я хотел бы редактировать исходные файлы через SSH, но мне нужно было бы получить доступ к хранилищу кода Docker. Я не знаю, как поступить.

Я понимаю, что это не совсем типичный способ развертывания приложений, поэтому я даже не уверен, что несколько узлов могут работать с измененной кодовой базой докера (узлы каким-то образом совместно используют JVM?).

Конкретно мой вопрос, как мне SSH в контейнер докера для доступа к базе кода?

27
bbs

Я не могу найти подходящее место для SSH для внесения изменений в репозиторий, в котором Docker запускает REPL

При создании кластера вы предоставляете несколько виртуальных машин в своем облачном проекте Google. Если вы посмотрите на https://console.cloud.google.com/compute/instances вы должны увидеть их, и у каждого из них будет внешний IP-адрес, по которому вы сможете подключиться по ssh. Затем создайте ssh-туннель к узлу VM, который перенаправляет локальный порт на IP-адрес модуля. 

Обратите внимание, что если вы используете несколько реплик вашего приложения clojure, вы должны подключиться к каждой реплике отдельно, чтобы обновить приложение. 

3
Robert Bailey

Формат команды для Kubernetes 1.5.0:

kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
50
Sergey Shcherbakov

Список экземпляров:

gcloud compute instances list

SSH в экземпляр:

gcloud compute ssh <instance_name> --zone=<instance_zone>

В этом примере перечислите запущенные процессы и идентификаторы их контейнеров:

Sudo docker ps -a

Присоединить к контейнеру:

Sudo docker exec -it <container_id> bash  
18
Yoshua Wuyts

Лучший способ присоединиться к контейнеру с помощью команды exec.

Присоединить к докеру работающего контейнера

docker exec -it YOUR_CONTAINER_ID bash

Присоедините к Кубернетесу бегущий контейнер.

kubectl exec - это YOUR_CONTAINER/POD_NAME bash

Присоединить к Kubernetes запущенный контейнер в заданном пространстве имен.

kubectl exec -it YOUR_CONTAINER/POD_NAME -n YOUR_NAMESPACE bash
13
Nitin

Если модуль находится в вашем текущем пространстве имен, получите список модулей:

kubectl get pods

Выберите стручок. Выполните сессию Bash на нем:

kubectl exec -it [POD_NAME] -- /bin/bash

В качестве альтернативы найдите нужный модуль в другом пространстве имен:

kubectl get pods --all-namespaces

Выберите модуль и выполните сессию Bash:

kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash
1
John McGehee