【问题标题】:Port mapping confusion in NomadNomad 中的端口映射混乱
【发布时间】:2023-02-17 05:42:32
【问题描述】:

我有以下基本的 nginx Nomad 工作:

job "hello" {
  datacenters = ["aus01"]

  group "hello" {
    network {
      port "http" {
        to = 80  # <--- Notice the port 80 specified here
      }
    }

    service {
      name     = "hello"
      provider = "nomad"
      port     = "http"

      tags = ["ingress"]

      meta {
        hostname = "ironforge.x17.space"
      }
    }

    task "hello" {
      driver = "docker"

      config {
        image = "nginx"
        ports = ["http"]
      }
    }
  }
}

在我的入口配置中,我映射到hello服务的动态地址和端口:

ingress:
{{- range nomadService "hello" }}
- service: http://{{ .Address }}:{{ .Port }}
  hostname: ironforge.x17.space
{{- end }}

这呈现为:

ingress:
- service: http://192.168.86.36:28868
  hostname: ironforge.x17.space

但是,我不明白为什么我需要在我的hello 组网络节中指定端口 80,以及为什么如果删除它,入口将停止工作。

The documentation states:

to (string:nil) - 在使用“桥接”模式配置端口以映射到任务的网络命名空间内部时适用。省略此字段或将其设置为 -1 会将映射端口设置为等于调度程序分配的动态端口。 NOMAD_PORT_ 环境变量将包含 to 值。

那么,如果映射端口设置为动态,为什么我的入口停止工作?毕竟,最终的入口配置甚至没有以任何方式引用 80 端口。

【问题讨论】:

    标签: nomad


    【解决方案1】:
    driver = "docker"
    

    在具有虚拟化网络接口的 docker 容器内部,有一个正在运行的 nginx 应用程序正在侦听在端口 80.在 80 端口在那个虚拟化容器内的网络接口。

    to = 80 告诉 Nomad 在 20000-32000 范围内重定向一个动态分配的端口真实的暴露给 docker 容器的虚拟化网络接口上的端口 80 的网络接口。

    考虑研究 docker 的介绍。 docker run -p 1234:80 在使用它时通常会进行端口重定向。

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2015-08-09
      相关资源
      最近更新 更多