【问题标题】:kubernetes vs Docker DNS configurationKubernetes vs Docker DNS 配置
【发布时间】:2019-02-22 00:17:54
【问题描述】:

在 Mac 上使用 Docker,我正在尝试将 docker run 参数移植到 kubernetes yaml 配置中,今天我们正在运行具有以下 DNS 标志的容器:

--dns="8.8.8.8" --dns="8.8.4.4"

当我对这个容器执行 docker 检查时,我看到:

"Dns": [
        "8.8.8.8",
        "8.8.4.4"
       ]

阅读 Kubernetes 文档后,我将 pod yaml 配置如下:

  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 8.8.8.8
      - 8.8.4.4

但是当我对 Kubernetes 启动的容器执行 docker 检查时,我看到了

 "Dns": null 

这是预期的吗?配置正确吗?也许 Kubernetes 网络绕过了容器配置,所以容器不知道......我根本不知道。

【问题讨论】:

  • 您好,也许 dnsPolicy 的值应该不同,如果您想附加主机的值,那么“ClusterFirstWithHostNet”可能会有用
  • 如果您在容器内cat /etc/resolv.conf 怎么办?你看到了什么?
  • @SureshVishnoi 根据文档和 github dnsPolicy 上的 k8s 代码应该是 None 才能使 dnsConfig 生效。
  • @fiunchinho,它显示了我的 mac 设置(使用其他名称服务器)
  • 嗨,我使用了上面的值,得到了下面的值 ``` sh-4.2# cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 sh-4.2# ```

标签: docker kubernetes


【解决方案1】:

正如 fiunchinho 澄清的那样,这种行为是正确的。配置Pod DNS policy 会对容器产生影响,但您将无法通过 docker 命令看到这一点,就像在其他少数情况下一样。这是因为 docker 和 Kubernetes 在堆栈的不同层上运行。

因此,将 DNS 参数添加到 docker run 将导致将它们写入 /etc/resolv.conf 并且添加 dnsConfig 会发生同样的事情,尽管在最后一个示例中 Docker 不会意识到这一点。所以回答这个问题,是的,这是预期的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2022-01-08
    • 1970-01-01
    • 2017-03-21
    • 2017-06-29
    相关资源
    最近更新 更多