2

我想在我正在处理initContainer的 Kubernetes中公开一个端口。Job到目前为止,我一直没有成功,并且在阅读文档时它说:

Init Container 上的端口不聚合在服务下。

在这种情况下聚合是什么意思?

截至目前,我认为答案是否定的,因为我正在运行的实验不允许我公开端口。但是,我对 Kubernetes 还很陌生,所以我不知道我是否在其他地方犯了错误。想在我尝试进一步调试之前,我会在这里询问我正在做的事情是否可行。

4

1 回答 1

3

这是一个模棱两可的词选择,但结果是您无法通过服务访问 initContainer。

Kubernetes 服务通过匹配它们的标签来提供对一组 Pod 的访问。从这个意义上说,服务是一个聚合器。我想这就是本意。

Pod 中也可以有多个容器,每个容器使用不同的端口。如果 Pod 与 Service 匹配,则该服务可以配置为在不同端口上提供对两者的访问。所以一个服务也可以使多个端口可用,尽管我不会称之为聚合。

Pod 不会被 Service 公开,直到它们的就绪探测通过并且 Pod 状态已就绪。当 Pod 状态正在初始化时,initContainer 在探针之前运行。因此,服务无法访问它是合乎逻辑的。想要在外部公开一个 initContainer 也很奇怪,因为它本质上是临时的。

您的目标是调试(https://unofficial-kubernetes.readthedocs.io/en/latest/tasks/debug-application-cluster/debug-init-containers/)还是允许其他 Pod/容器访问?我相信 Pod 在初始化时会有一个 IP 地址,但没有一个可以保证稳定的 IP 地址,所以我不知道您是否可以进行端口转发以进行调试https://kubernetes.io/docs/tasks/访问应用程序集群/端口转发访问应用程序集群/

我注意到您说您希望在作业中公开 initContainer。在 Job 中服务流量将是一个不同寻常的目标。如果目标是监控作业,请参阅监控 kubernetes 作业

于 2018-08-25T08:24:31.847 回答