【问题标题】:Kubernetes - How to edit CoreDNS corefile configmap?Kubernetes - 如何编辑 CoreDNS 核心文件配置图?
【发布时间】:2019-11-02 16:24:25
【问题描述】:

我有一个非常标准的 Kubernetes 安装,在 Ubuntu 上作为单节点集群运行。我正在尝试配置 CoreDNS 来解析我的 Kubernetes 集群中的所有内部服务和一些外部域名。到目前为止,我只是在做实验。我首先创建了一个busybox pod,如下所示:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

在我对核心文件进行更改之前,一切都按照指南中的说明进行。我发现了几个问题:

  1. 我使用kubectl -n kube-system edit configmap coredns 编辑了默认核心文件并将.:53 替换为cluster.local:53。等待之后,事情看起来很有希望。 google.com 解析开始失败,而kubernetes.default.svc.cluster.local 继续成功。但是,kubernetes.default 分辨率也开始失败。这是为什么?在busybody pod 的/etc/resolv.conf 中仍有svc.cluster.local搜索 条目。改变的只是核心文件。
  2. 我尝试向核心文件添加一个额外的节/块(同样,通过编辑配置映射)。我添加了一个简单的块:

    .:53{
        log
    }
    

    好像corefile编译失败什么的。 pod 看起来很健康,不会向日志报告任何错误,但请求都挂起并失败。

我尝试添加日志插件,但由于该插件仅适用于与该插件匹配的域,并且域名不匹配或核心文件损坏,因此无法正常工作。

为了透明,这是我的新核心文件:

cluster.local:53 {
    errors
    log
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       upstream
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
}

【问题讨论】:

    标签: kubernetes dns kube-dns coredns


    【解决方案1】:

    看起来您的 Corefile 在通过“kubectl edit ...”命令进行编辑期间以某种方式损坏。可能是您的默认文本编辑器的错,但它绝对有效。

    我建议您使用以下命令替换当前的配置映射:

    kubectl get -n kube-system cm/coredns --export -o yaml | kubectl replace -n kube-system -f coredns_cm.yaml
    

    #coredns_cm.yaml
    apiVersion: v1
    data:
      Corefile: |
        cluster.local:53 {
            log
            errors
            health
            kubernetes cluster.local in-addr.arpa ip6.arpa {
               pods insecure
               upstream
               fallthrough in-addr.arpa ip6.arpa
            }
            prometheus :9153
            proxy . /etc/resolv.conf
            cache 30
            loop
            reload
            loadbalance
        }
    kind: ConfigMap
    metadata:
      creationTimestamp: null
      name: coredns

    【讨论】:

    【解决方案2】:
    $ kubectl -n kube-system edit configmaps coredns -o yaml
    

    然后使用vi 编辑并保存coredns 配置映射。保存后,将应用更改。

    【讨论】:

      【解决方案3】:
      kubectl get -n kube-system configmaps coredns -o yaml > core_dns.yaml
      kubectl replace -n kube-system -f core_dns.yaml
      

      【讨论】:

        猜你喜欢
        • 2018-10-31
        • 2018-11-24
        • 2019-06-30
        • 2018-06-13
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多