DNS策略(1) 本节介绍网络的用户指南:DNS策略。 DNS策略概述 可以为Pod设置DNS解析策略,目前Kubernetes支持Default、ClusterFirst、ClusterFirstWithHostNet和None四种DNS策略,可通过Pod的dnsPolicy字段指定: ClusterFirst:是Pod的默认DNS策略,任何与集群域后缀不匹配的DNS查询均会转发到上游DNS服务器。上游DNS服务器默认取自节点的resolv.conf,集群管理员可配置了额外的存根域和上游DNS服务; Default:此策略下,名称解析配置将从Pod所在节点继承,自定义存根域和上游域名服务不能够与该策略一起使用; ClusterFirstWithHostNet:使用hostNetwork的Pod需指定为ClusterFirstWithHostNet,否则其默认的ClusterFirst策略会退化为Default; None:使用此策略的Pod,其DNS配置取自Pod的dnsConfig定义。 DNS策略配置示例 根据不同使用场景,DNS策略配置示例如下: 使用容器集群提供的CoreDNS来做域名解析 针对这种场景,可使用ClusterFirst策略,示例配置如下: apiVersion: v1 kind: Pod metadata: name: nginxdemo namespace: default spec: containers: image: registryvpcgzsyj.crs.ctyun.cn:30015/library/nginxphoton:v1.8.6 name: demo dnsPolicy: ClusterFirst Pod层面自定义DNS配置 若需要给工作负载指定DNS配置时,可使用None策略,并配置dnsConfig,示例配置如下: apiVersion: v1 kind: Pod metadata: name: nginxdemo namespace: default spec: containers: image: registryvpcgzsyj.crs.ctyun.cn:30015/library/nginxphoton:v1.8.6 name: demo dnsPolicy: None dnsConfig: nameservers: ["169.254.xx.xx"] searches: default.svc.cluster.local svc.cluster.local cluster.local options: name: ndots value: "2" 其中,dnsConfig中的参数说明如下: 参数 描述 nameservers 将用作Pod的DNS服务IP地址列表,最多可以指定3个地址。当Pod的dnsPolicy设置为None时,列表必须至少包含一个IP地址。列出的DNS的IP列表将合并到基于dnsPolicy生成的域名解析文件的nameserver字段中,并删除重复的地址。 searches Pod中主机名查找的DNS搜索域列表,此属性是可选的。指定后,提供的列表将合并到从所选DNS策略生成的基本搜索域名中,并删除重复的域名。Kubernetes最多允许6个搜索域。 options 可选的对象列表,其中每个对象可以具有name属性(必需)和value属性(可选)。此属性中的内容将合并到从指定的DNS策略生成的选项中,并删除重复的条目。
来自: