9

我有一个在 VM 上运行的容器化应用程序。它由两个 docker 容器组成。第一个包含 WebSphere Liberty 服务器和 Web 应用程序。第二个包含 PostgreSQL 和应用程序的数据库。

在我的本地 VM 上,我只使用docker run启动两个容器,然后使用docker attach附加到 Web 服务器容器,这样我就可以编辑 server.xml 文件以指定数据库的公共主机 IP,然后启动容器中的 Web 服务器。该应用程序运行良好。

现在我正在尝试在 Google Cloud Platform 上部署该应用程序。

  1. 我设置了我的 gcloud 配置(项目、计算/区域)。
  2. 我创建了一个集群。
  3. 我创建了一个 JSON pod 配置文件,它指定了两个容器。
  4. 我创建了豆荚。
  5. 我为 pod 配置文件中指定的端口打开了防火墙。

在此刻:

  1. 我查看了 pod(gcloud preview container kubectl get pods),它显示两个容器都在运行。
  2. 我通过 SSH 连接到集群(gcloud compute ssh xxx-mycluster-node-1)并发出sudo docker ps,它显示数据库容器正在运行,但不是 Web 服务器容器。使用sudo docker ps -l我可以看到未运行的 Web 服务器容器,但它会每隔 10 秒左右尝试启动和退出。

所以现在我需要更新 server.xml 并启动 Liberty 服务器,但我不知道如何在这个领域做到这一点。我可以像在本地 VM 中那样附加到 Web 服务器容器吗?任何帮助将不胜感激。谢谢。

4

2 回答 2

20

是的,您可以附加到 pod 中的容器。使用 Kubernetes 1.0 发出以下命令:

做:

  • kubectl get po获取 POD 名称
  • kubectl describe po POD-NAME查找容器名称

然后:

kubectl exec -it POD-NAME -c CONTAINER-NAME bash假设你有 bash

它类似于docker exec -it CONTAINER-NAME WHAT_EVER_LOCAL_COMMAND

于 2015-09-02T09:53:47.710 回答
0

在机器本身上,您可以通过以下方式查看崩溃循环容器:

码头工人ps -a

接着

码头工人日志

您还可以使用 kubectl get pods -oyaml 来获取诸如重启计数之类的详细信息,这将验证容器是否正在崩溃循环。

于 2015-04-02T17:56:37.987 回答