<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pod在K8S中DNS解析流程和顺序 :: Ay Docs</title>
    <link>https://ops.docs.72602.space/using/k8s/pod_dns_route/index.html</link>
    <description>核心概念 CoreDNS： 从Kubernetes 1.11开始，CoreDNS是默认的DNS服务。它作为一个或多个Pod运行在kube-system命名空间下，并配有一个Kubernetes Service（通常叫kube-dns）。 resolv.conf 文件： 每个Pod的/etc/resolv.conf文件是DNS解析的蓝图。Kubelet会自动生成这个文件并挂载到Pod中。 DNS策略： 你可以通过Pod Spec中的dnsPolicy字段来配置DNS策略。 Pod 的 /etc/resolv.conf 解析 这是一个典型的Pod内的/etc/resolv.conf文件内容：&#xA;nameserver 10.96.0.10 search &lt;namespace&gt;.svc.cluster.local svc.cluster.local cluster.local options ndots:5 让我们逐行分析：&#xA;1. nameserver 10.96.0.10 这是CoreDNS Service的集群IP地址。所有Pod的DNS查询默认都会发送到这个地址。 这个IP来自kubelet的--cluster-dns标志，在启动时确定。 2. search &lt;namespace&gt;.svc.cluster.local svc.cluster.local cluster.local 搜索域列表。当你使用不完整的域名（即不是FQDN）时，系统会按照这个列表的顺序，依次将搜索域附加到主机名后面，直到找到匹配的记录。 &lt;namespace&gt;是你的Pod所在的命名空间，例如default。 搜索顺序： &lt;pod-namespace&gt;.svc.cluster.local svc.cluster.local cluster.local 3. options ndots:5 这是一个关键的优化/控制选项。 规则： 如果一个域名中的点（.）数量大于或等于这个值（这里是5），系统会将其视为绝对域名（FQDN），并首先尝试直接解析，不会走搜索域列表。 反之，如果点数少于5，系统会先依次尝试搜索域，如果都失败了，最后再尝试名称本身。 DNS 解析流程与顺序（详解） 假设你的Pod在default命名空间，并且resolv.conf如上所示。&#xA;场景1：解析Kubernetes Service（短名称） 你想解析同一个命名空间下的Service：my-svc。&#xA;应用程序请求解析 my-svc。 系统检查名称 my-svc，点数（0） &lt; 5。 进入搜索流程： 第一次尝试： my-svc.default.svc.cluster.local -&gt; 成功！ 返回ClusterIP。 解析结束。 场景2：解析不同命名空间的Service 你想解析另一个命名空间prod下的Service：my-svc.prod。</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/using/k8s/pod_dns_route/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>