AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1009907
Accepted
CodeChimp
CodeChimp
Asked: 2020-03-29 19:38:49 +0800 CST2020-03-29 19:38:49 +0800 CST 2020-03-29 19:38:49 +0800 CST

Kubernetes pod /etc/resolv.conf 有错误的名称服务器

  • 772

我在家里有一个 4 节点集群设置,我正在使用它,当我开始尝试进行 pod 到 pod 通信时遇到了问题。我使用 Kubespray 安装节点(1 个“服务器/控制器”和 3 个“节点”)。

问题是我无法按名称解析服务,只能按 IP 解析。例如,我使用 Helm 在默认命名空间中使用服务名称“jenkins”启动 Jeknins,但如果我尝试 ping “jenkins”或“jenkins.default”,它不会解决。在 dnsutils pod 中执行dig jenkins或操作会产生:dig jenkins.default

/ # dig jenkins.default

; <<>> DiG 9.11.6-P1 <<>> jenkins.default
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 8927
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 229fbf94bb25564ae66dc8f45e7f646e5abb5f9dd4ede1d7 (good)
;; QUESTION SECTION:
;jenkins.default.       IN  A

;; Query time: 0 msec
;; SERVER: 169.254.25.10#53(169.254.25.10)
;; WHEN: Sat Mar 28 14:51:26 UTC 2020
;; MSG SIZE  rcvd: 72

检查/etc/resolv.confdnsutils pod 中的文件,我注意到它设置了一个奇怪的 IP 地址nameserver:169.254.25.10。查看所有 pod 后,似乎它们都具有相同的配置,但 coredns 服务设置为 10.233.0.3。事实上,所有的 IP 都是 10. 的东西。在 dnsutils pod 上手动更改/etc/resolv.conf以将 10.233.0.3 用于名称服务器似乎可以为该 pod 更正它,但是如何为所有 pod 修复它?无论如何,那个 169.254.25.10 IP 是从哪里来的?我的实际网络 DNS 服务器是 10.0.0.5,据我所知,我的内部网络中没有 169.254 IP。

kubernetes
  • 2 2 个回答
  • 10325 Views

2 个回答

  • Voted
  1. Best Answer
    Crou
    2020-03-31T01:19:42+08:002020-03-31T01:19:42+08:00

    正如我们可以从 Kubernetes dosc定制 DNS 服务中看到的:

    如果 Pod 的dnsPolicy设置为“ default”,它会从 Pod 运行所在的节点继承名称解析配置。Pod 的 DNS 解析应该与节点相同。

    如果你不想要这个,或者你想要一个不同的 pod 的 DNS 配置,你可以使用 kubelet 的 --resolv-conf 标志。将此标志设置为“”以防止 Pod 继承 DNS。/etc/resolv.conf 将其设置为有效的文件路径以指定DNS 继承以外的文件 。

    至于Pod 的 DNS Policy如下:

    可以基于每个 pod 设置 DNS 策略。目前 Kubernetes 支持以下特定于 pod 的 DNS 策略。这些策略在 dnsPolicy Pod Spec 的字段中指定。

    • “ Default”:Pod 继承了 Pod 运行所在节点的名称解析配置。 有关详细信息,请参阅 相关讨论。
    • “ ClusterFirst”:任何与配置的集群域后缀不匹配的DNS查询,例如“ www.kubernetes.io”,都会被转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。 有关在这些情况下如何处理 DNS 查询的详细信息,请参阅 相关讨论。
    • “ ClusterFirstWithHostNet“:对于使用 hostNetwork 运行的 Pod,您应该显式设置其 DNS 策略“ ClusterFirstWithHostNet”。
    • “ None“:它允许 Pod 忽略来自 Kubernetes 环境的 DNS 设置。所有 DNS 设置都应该使用 dnsConfig Pod Spec 中的字段提供。请参阅 下面的 Pod 的 DNS 配置 小节。
    • 3
  2. Sandeep kumar singh
    2021-02-04T23:43:54+08:002021-02-04T23:43:54+08:00

    169.254.0.0/16 是链接本地地址。我主要发现这个地址是在链接断开时分配的。更多信息 - https://en.wikipedia.org/wiki/Link-local_address。

    • 1

相关问题

  • 无法通过 Docker 在本地运行 Hyperkube (kubernetes)

  • 跨 Kubernetes 分散工作负载

  • Kubernetes升级回滚机器类型

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve