【问题标题】:Is it possible to expose ports on initContainers in Kubernetes?是否可以在 Kubernetes 的 initContainers 上公开端口?
【发布时间】:2019-01-31 09:51:36
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: kubernetes kubernetes-service kubernetes-networkpolicy


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢@Ryan Dawson,非常好的信息。我打算在 Job 中为一个独特的用例在外部公开一个 initContainer。
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2022-12-12
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多