Pod 的 DNS 策略有如下几个:
- Default: Pod 从运行所在的节点继承名称解析配置。
- ClusterFirst: 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。
- ClusterFirstWithHostNet:对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 "ClusterFirstWithHostNet"。
- None: 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段 所提供的 DNS 设置。
注意,这里有个坑可能会搞错:
乍一看大家可能都容易认为 Default 是默认值。但是这里 `Default 不是默认值`!!!`默认值是 ClusterFirst` !!!即 如果未明确指定 dnsPolicy,则使用 "ClusterFirst"。
关于这一点的说明可以参照官网:https://kubernetes.io/zh-cn/d...
如果害怕记错,也可以这么去理解:
通常来说对于默认配置,一般不需要使用显示使用“Default”字样来注明,而是使用一个“见文知意”词然后说明它就是默认配置并且实现了怎样的默认功能即可。而一旦显示使用“Default”字样,就要特别小心它可能不是我们下意识认为的“默认配置”。
同时,针对 dnsPolicy 的 default 策略该怎样理解记忆呢?也简单。设置为 default,就说明 Pod 不具备明确的 DNS 配置。没有那咋办呢?继承呗!咋继承?子承父业呗!即 `Pod 运行在哪个宿主机上,就使用哪个宿主机的 DNS 来完成解析`。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。