21

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

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

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

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

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

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

ответ

1

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

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

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

1

Вы можете использовать инструмент kubectl для прикрепления или выполнения в запущенных контейнерах в вашем кластере K8s.

11

Лучший способ крепления к контейнеру через команду exec.

Присоединить к докер работает контейнер

docker exec -it YOUR_CONTAINER_ID bash

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

kubectl exec -it YOUR_CONTAINER/POD_NAME bash
14

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

gcloud compute instances list 

SSH в случае:

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

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

sudo docker ps -a 

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

sudo docker exec -it <container_id> bash 
+0

Спасибо! У меня есть gcr.io/cloudql-docker/gce-proxy, который не запускается, и я пытаюсь диагностировать. Я использовал 'docker run -it sh', но мне нужно увидеть мои монстры. Любая идея, что объем args для 'docker run' похож на секреты, когда на узле? – kross

32

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

kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash 
+0

Отлично работает. Возможно, вам нужно будет добавить -n , если вы получите сообщение «Ошибка с сервера (NotFound): pods« blabla »не найден» – rdeboo

Смежные вопросы