【问题标题】:How to use Cloudflare 1.1.1.1 with Kubernetes DNS如何将 Cloudflare 1.1.1.1 与 Kubernetes DNS 一起使用
【发布时间】:2019-06-28 00:18:21
【问题描述】:

我想在 Kubernetes 中使用 Cloudflare 的 1.1.1.1 and 1.0.0.1 名称服务器以及 DNS over TLS。它looks like 我可以使用core-dns 做到这一点。我需要以某种方式设置以下内容:

  • IPv4:1.1.1.1 和 1.0.0.1
  • IPv6:2606:4700:4700::1111 和 2606:4700:4700::1001
  • TLS 服务器名称:tls.cloudflare-dns.com

我的ConfigMap 应该是什么样子?我已经在下面开始了:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]

【问题讨论】:

    标签: kubernetes dns cloudflare nameservers coredns


    【解决方案1】:

    Azure AKS 唯一答案

    这是直接从Azure AKS releases复制而来的。

    对于 kube-dns,有一个未记录的功能,它支持两个配置映射,允许用户执行 DNS 覆盖/存根域和其他自定义。转换为 CoreDNS 后,此功能丢失 - CoreDNS 仅支持单个配置映射。通过上面的修补程序,AKS 现在可以解决相同级别的自定义问题。这是 CoreDNS 的等效 ConfigMap:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      azurestack.server: |
        azurestack.local:53 {
            forward . tls://1.1.1.1 tls://1.0.0.1 {
              tls_servername cloudflare-dns.com
              health_check 5s
            }
            cache 30
        }
    

    创建配置映射后,您需要删除 CoreDNS 部署以强制加载新配置。

    kubectl -n kube-system delete po -l k8s-app=kube-dns
    

    【讨论】:

      【解决方案2】:

      你可以配置你的 core-dns kubectl -n kube-system edit configmap coredns 并添加到核心文件的末尾:

      . {
          forward . tls://1.1.1.1 tls://1.0.0.1 {
             tls_servername cloudflare-dns.com
             health_check 5s
          }
          cache 30
      }
      

      然后保存新配置并重新启动 core-dns pod。

      kubectl get pod -n kube-system | grep core-dns | cut -d " " -f1 - | xargs -n1 -P 10 kubectl delete pod -n kube-system
      
      

      【讨论】:

      • 有没有办法使用更友好的ConfigMap 来做到这一点?另外,Core-DNS 是否支持 IPv6?
      • 使用kubectl -n kube-system edit configmap coredns你的ipdate configmap,关于IPv6 我不这么认为,因为Kubernetes不完全支持IPv6。
      • 有没有办法修补ConfigMap 以仅提供您想要更改的配置片段?如果可能的话,我想通过 CI/CD 做到这一点,以使事情可重复,kubectl edit 对此并不好。
      • 这是一个kube-system 命名空间。因此,如果您想添加一些 CI/CD 更新此配置图,您必须在存储基础设施代码的位置进行更改,例如 KOPS 将其存储在 AWS 上的 s3 存储桶中。如果您不管理 kube-system 命名空间,只需更新您当前的设置即可。
      猜你喜欢
      • 1970-01-01
      • 2018-10-28
      • 2020-06-03
      • 2020-01-02
      • 1970-01-01
      • 2012-06-03
      • 2014-09-14
      • 1970-01-01
      • 2014-12-07
      相关资源
      最近更新 更多