7

У меня есть контейнерное приложение, работающее на виртуальной машине. Он состоит из двух докерных контейнеров. Первый содержит сервер WebSphere Liberty и веб-приложение. Второй содержит PostgreSQL и DB приложения.Как подключить докер к контейнеру - Google Cloud Platform/Kubernetes

На моей локальной виртуальной машине, я просто использовать Docker запустить, чтобы запустить два контейнера, а затем я использую докер прикрепить прикрепить к контейнеру веб-сервера, так что я могу изменить файл server.xml в укажите IP-адрес общедоступного хоста для БД и затем запустите веб-сервер в контейнере. Приложение работает нормально.

Теперь я пытаюсь развернуть приложение на Google Cloud Platform.

  1. Я настроил свою конфигурацию gcloud (проект, вычислить/зону).
  2. Я создал кластер.
  3. Я создал файл конфигурации JSON pod, который задает оба контейнера.
  4. Я создал стручок.
  5. Я открыл брандмауэр для порта, указанного в конфигурационном файле pod.

На данный момент:

  1. Я смотрю на пакетике (gcloud предварительного просмотра контейнера kubectl получить стручки), он показывает оба контейнера работают.
  2. I SSH к кластеру (gcloud вычисления SSH ххх-mycluster-узел-1) и выпуск Судо докер пс и он показывает контейнер работает с базой данных, но не контейнер веб-сервер. С sudo docker ps -l Я вижу контейнер веб-сервера, который не работает, но он пытается начать и выходить каждые 10 секунд или около того.

Теперь мне нужно обновить server.xml и запустить сервер Liberty, но я не знаю, как это сделать в этой области. Могу ли я подключаться к контейнеру веб-сервера, как в локальной виртуальной машине? Любая помощь будет принята с благодарностью. Благодарю.

+1

Похоже, что контейнер веб-сервера представляет собой цикл крушения. Вы просмотрели его журналы, чтобы узнать, что такое ошибка? Вы можете сделать это удаленно, используя «gcloud preview container kubectl log ». –

+0

Когда я проверяю журнал для работающего контейнера БД, я получаю ожидающие сообщения журнала, но когда я пытаюсь проверить журнал для контейнера веб-сервера, я просто получаю «Внутренняя ошибка: контейнер« mycontainer »не готов. " что не помогает. Эта проблема ранее упоминалась здесь: https://github.com/GoogleCloudPlatform/kubernetes/issues/4526 –

+0

@RobertBailey можно ли просмотреть журналы для последнего (или любого предыдущего) экземпляра контейнера для циклического краха? Как только контейнер работает, можно ли его подключить? –

ответ

0

На самой машине, вы можете увидеть аварии зацикливание контейнеров через:

докер п.с. -a

, а затем

Докер журналы

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

+0

хорошо отметить этот тоже для отладки вещей 'kubectl logs {pod_id}' – Ben

19

Да, вы можете прикрепить к контейнеру в контейнере. Использование Кубернете 1.0 следующую команду:

Do:

  • kubectl get po, чтобы получить имя POD
  • kubectl describe po POD-NAME найти имя контейнера

Тогда:

kubectl exec -it POD-NAME -c CONTAINER-NAME bash Если у вас есть Баш

Его схож с docker exec -it CONTAINER-NAME WHAT_EVER_LOCAL_COMMAND

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