在学习教程开始,第3部分:部署到Kubernetes时,我在清单文件的部署定义中无意中找到了Pod模板。没有指定港口,无论是在舱内还是集装箱段。
这就引出了我最初的问题:港口发布是如何从码头容器到吊舱的?
下面的引号听起来像是kubernetes在启动后获得了对正在运行的容器的洞察,并从侦听0.0.0.0:PORT的服务中获取端口,并将其映射到pod环境中的同一个端口(网络命名空间)。
此处不指定端口并不会阻止该端口被公开。在容器中侦听默认"0.0.0.0“地址的任何端口都可以从网络访问。来源
如果我的假设是正确的,这对多个容器的吊舱意味着什么?kubernetes只允许内部服务监听不同端口的容器吗?或者可以将容器内部端口映射到pod环境中的不同端口(网络命名空间)?
根据下面的报价,我假设从容器到pod的港口映射是不可能的。实际上,在两个具有相同端口的容器中指定两个服务并不会产生太大的意义,只是通过紧接在此之后的映射来更改它们。
在这里公开一个端口会为系统提供关于容器使用的网络连接的附加信息,但主要是信息性的。来源
更新2019年-10-15
正如以下引号所述,默认情况下,码头容器不会将任何港口发布到外部世界。
默认情况下,当您创建容器时,它不会将其任何端口发布到外部世界。若要使端口可用于Docker以外的服务或未连接到容器网络的Docker容器,请使用-publish或-p标志。来源
这意味着kubernetes必须以某种方式配置在吊舱内运行的码头容器,以便容器的端口被发布到吊舱。
关于下面的报价,kubernetes是否可能使用--网络主机配置来运行码头容器?假设吊舱是库伯内特斯的船坞主人。
如果对容器使用主机网络模式,则该容器的网络堆栈不会与Docker主机隔离。例如,如果运行绑定到端口80的容器,并且使用主机网络,则容器的应用程序可以在主机IP地址的端口80上使用。来源
发布于 2019-10-10 16:22:56
在吊舱中运行的容器类似于在连接到网络的节点上运行的进程。Pod获得一个网络地址,所有容器共享相同的网络地址。他们可以用localhost互相交谈。
在舱内运行的容器可以监听该地址上的任何端口。如果一个吊舱中有多个容器运行,它们不能绑定到同一个端口,只有一个可以绑定。请注意,不需要发布这些端口。容器可以监听任何端口,如果客户端连接到吊舱的那个端口,那么流量就会被传送到它。
因此,从集装箱到吊舱的港口映射是不可能的。
公开的容器/吊舱端口主要是信息端口,工具使用它们来创建资源。
https://stackoverflow.com/questions/58327009
复制相似问题