【问题标题】:Do you need to define ports.containerPort in K8s if Dockerfile describes as EXPOSE如果Dockerfile描述为EXPOSE,是否需要在K8s中定义ports.containerPort
【发布时间】:2019-09-19 06:54:58
【问题描述】:

我有一个遗留的 Deployment.yaml,Helm 使用它并且到目前为止工作正常。

      containers:
        ports:
          - containerPort: 3000

这部分之前的缩进是错误的。所以据我所知,它的ports 部分没有被激活或在k8s中使用。

所以现在让我感到奇怪的是容器是如何在 3000 端口一直运行和访问的?所以我寻找另一个描述这个端口的定义。

我在Dockerfile找到它

   EXPOSE 3000

我现在的问题是 - 您是否需要在 .yaml 配置中定义 port.containerPort 或者容器端口是否已经通过 DockerfileEXPOSE 语句暗示为 3000?

感觉 k8s 知道这应该是容器端口,因为 Dockerfile 描述了它。

【问题讨论】:

    标签: docker kubernetes kubernetes-container


    【解决方案1】:

    不,EXPOSE 与此无关,只是为您提供容器将使用 port 3000 的信息。配置来自containerPort

    k8sthis

    exposethis

    【讨论】:

    • 正如我提到的 .yaml 中 ports 列表的缩进格式错误,但容器仍然可以访问。你怎么解释这个?容器的默认端口不是 3000 吗?还是K8s自己修复了.yaml
    • 如果这是一个真正的识别错误,那么k8s会给你一个我认为的错误并拒绝启动。
    猜你喜欢
    • 2014-01-02
    • 2020-12-09
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2019-06-05
    • 2015-02-18
    相关资源
    最近更新 更多