Docker 既然我们在配置服务时有这个选项,那么Kubernetes部署端口配置有什么用呢?

Docker 既然我们在配置服务时有这个选项,那么Kubernetes部署端口配置有什么用呢?,docker,kubernetes,Docker,Kubernetes,我们已经在docker中使用EXPOSE in Dockerfile公开了一个端口,在Kubernetes service.yaml中再次使用port和targetPort公开了一个端口;这些是可以理解的。但是为什么需要在Kubernetes deployment.yaml指定端口呢?我是否遗漏了一些概念?以下是Kubernetes文档: 要从容器中公开的端口列表。在这里公开一个端口 系统将显示有关网络连接的其他信息a 容器使用,但主要是信息性的。不指定端口 此处并不能防止该端口暴露。任何 在容

我们已经在docker中使用EXPOSE in Dockerfile公开了一个端口,在Kubernetes service.yaml中再次使用port和targetPort公开了一个端口;这些是可以理解的。但是为什么需要在Kubernetes deployment.yaml指定端口呢?我是否遗漏了一些概念?

以下是Kubernetes文档:

要从容器中公开的端口列表。在这里公开一个端口 系统将显示有关网络连接的其他信息a 容器使用,但主要是信息性的。不指定端口 此处并不能防止该端口暴露。任何 在容器中侦听默认的0.0.0.0地址将是 可从网络访问


因此,部署中的端口用于提供信息。它类似于Dockerfile中的EXPOSE。主要原因是帮助维护部署的人员更好地了解配置。

遵循Kubernetes文档:

要从容器中公开的端口列表。在这里公开一个端口 系统将显示有关网络连接的其他信息a 容器使用,但主要是信息性的。不指定端口 此处并不能防止该端口暴露。任何 在容器中侦听默认的0.0.0.0地址将是 可从网络访问


因此,部署中的端口用于提供信息。它类似于Dockerfile中的EXPOSE。主要原因是帮助维护部署的人员更好地理解配置。

多年来一直在讨论这一点,但基本上早期的一个决定是忽略容器中的公开元数据,因为Docker Networking和CNI有着微妙的不同模型。具体来说,CNI在公开容器端口时避免了NAT层,因为它想模拟一个全球平面网络。

多年来一直在讨论这个问题,但基本上早期的一个决定是忽略容器中的公开元数据,因为Docker网络和CNI有着微妙的不同模型。具体来说,CNI在公开容器端口时避免了NAT层,因为它想模拟一个全局平面网络。

我想您是在询问ports.containerPort。它指定pod公开的端口。这主要是信息性的,因为pod监听的任何端口都可以连接。但是,您可以通过这种方式为端口命名


Dockerfile中的公开主要是信息性的。服务中的端口和目标端口是必需的。Port是服务正在侦听的端口号和名称,targetPort是服务转发到的pod上的端口。

我想您是在询问ports.containerPort。它指定pod公开的端口。这主要是信息性的,因为pod监听的任何端口都可以连接。但是,您可以通过这种方式为端口命名

Dockerfile中的公开主要是信息性的。服务中的端口和目标端口是必需的。Port是服务正在侦听的端口号和名称,targetPort是服务转发到的pod上的端口