【发布时间】:2018-08-08 14:04:05
【问题描述】:
我正在探索 OpenShift 3.9,并设法使用oc new-app 和 Docker 构建策略构建并运行了第一个容器。我的 Dockerfile 包含命令 EXPOSE 5432。
推出后oc describe istag/my_app:latest | grep ^Exposes 报告Exposes Ports: 5432/tcp,看起来不错:图像暴露了端口5432。但是oc describe po/my_app-1-some_id | grep "^\s*Port" 报告Port: <none>,所以总体上看起来好像端口暴露在Docker 级别,但还没有达到 Kubernetes/OpenShift 的水平。
OpenShift documentation 表示如下:
new-app 命令尝试检测输入图像中暴露的端口。 它使用最小数字公开端口来生成服务 公开该端口。为了暴露不同的端口,在 new-app 之后 已经完成,只需使用 oc expose 命令生成额外的 服务。
为什么oc new-app 在这种情况下不暴露端口 5432(实际上它也没有创建任何 service 资源),我怎样才能让它自动这样做,因为输入图像已经这样做了,而且似乎可以判断来自文档?
更新以下是有关如何创建新应用程序的更多详细信息:
oc new-app ssh://my_account@my_git_server/my_path/my_repo.git
--context-dir=my_dir --strategy=docker --name my_app
Git 存储库包含一个迄今为止微不足道的 my_dir/Dockerfile,而它又包含命令 EXPOSE 5432。
【问题讨论】:
-
如果你运行
oc describe service/my_app,你会得到什么?它是您要查看的服务对象。无论哪种方式,如果这是您所期望的,默认情况下端口不会暴露在 OpenShift 集群之外。 -
@GrahamDumpleton 否
svc资源已由此oc new-app创建(这似乎是问题的一部分)。只有is、bc、dc和pod。是的,在这个阶段暴露在集群内部的端口就足够了。 -
如果开始使用 OpenShift,您可能需要阅读三本免费电子书,您可以在 help.openshift.com 底部找到链接
-
如果您运行
oc new-app命令但添加选项--dry-run -o json,它生成的JSON 是否显示Service对象?在DeploymentConfig中,容器中的ports定义显示了什么? -
非常欢迎您发帖,因为您最了解问题/结果是什么。