Pod的DNS策略:

        DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 这些策略可以在 Pod 规约中的 dnsPolicy 字段设置。

Default:

        Pod 从运行所在的节点继承名称解析配置。

ClusterFirst:

        与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。

ClusterFirstWithHostNet:

        对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 ClusterFirstWithHostNet。

None:

        此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段 所提供的 DNS 设置。


示例:

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: None # 忽略k8s的dns设置,使用自定义设置
  dnsConfig:
    nameservers:
    - 114.114.114.114 # DNS地址,不能光设置个地址,后面的search也要带上
    - 223.5.5.5
    searches:
    - default.svc.cluster.local
    - svc.cluster.local
    - cluster.local
    options:
    - name: ndots # 域名中包含点的个数比配置的ndots小就会追加search中的后缀来查找
      value: "5"


修改coreDNS:

https://www.scriptjc.com/article/1008


在deployment中设置hosts解析:

https://www.scriptjc.com/article/1142


参考文章:

https://help.aliyun.com/document_detail/188179.html

ndots作用参考:

https://juejin.cn/post/6844903951393882125

CoreDNS的配置:

https://kubernetes.io/zh/docs/tasks/administer-cluster/dns-custom-nameservers/

Pod DNS策略:

https://kubernetes.io/zh/docs/concepts/services-networking/dns-pod-service/