【发布时间】:2020-08-08 12:12:14
【问题描述】:
我使用 Openshift/Kubernates 已经有一段时间了,这就是我的理解。 用于服务间通信
- 如果它们在同一命名空间下,则使用
${service-name}的 DNS 名称 - 如果它们来自不同的命名空间(网络已加入),则使用
${service-name}.${namespace}.svc.cluster.local的 DNS 名称
最近有人向我介绍了“我们应该在 svc.cluster.local 之后添加一个点以使其成为 FQDN,以提高 DNS 查找速度”的主题。做了一些测试,确实使用点查找要快得多。 (~100ms 不带点,10ms 带点)
经过一番研究,这是由 kubernates 的默认 dns 设置引起的
sh-4.2$ cat /etc/resolv.conf
search ${namespace}.svc.cluster.local svc.cluster.local cluster.local
nameserver X.X.X.X
options ndots:5
如果 dns 名称不包含 5 个点,则 ndots = 5 将执行本地搜索(顺序)。
在${service-name}.${namespace}.svc.cluster.local的情况下,本地搜索将是这样的
-
${service-name}.${namespace}.svc.cluster.local+${namespace}.svc.cluster.local// 查找失败 -
${service-name}.${namespace}.svc.cluster.local+svc.cluster.local// 查找失败 -
${service-name}.${namespace}.svc.cluster.local+cluster.local// 查找失败 -
${service-name}.${namespace}.svc.cluster.local// 成功查询
对于${service-name}.${namespace}.svc.cluster.local.,本地搜索将是这样的
-
${service-name}.${namespace}.svc.cluster.local// 成功查询
参考文献
问题:
- 既然
ndots = 5是kubernetes的默认设置,为什么${service-name}.${namespace}.svc.cluster.local.官方没有记录呢? - 我们应该将所有服务调用更改为
${service-name}.${namespace}.svc.cluster.local.吗?有什么潜在的缺点吗?
【问题讨论】:
标签: networking kubernetes dns openshift kube-dns