Kubernetes-如何编辑CoreDNS corefile configmap?

Kubernetes-如何编辑CoreDNS corefile configmap?,kubernetes,dns,kube-dns,coredns,Kubernetes,Dns,Kube Dns,Coredns,我有一个相当标准的Kubernetes安装,在Ubuntu上作为单节点集群运行。我正在尝试配置CoreDNS以解析Kubernetes集群内的所有内部服务和一些外部域名。到目前为止,我只是在做实验。我首先创建了一个busybox pod,如下所示: 在我对corefile进行更改之前,一切都按照指南中的描述进行。我看到了几个问题: 我使用kubectl-n kube system edit configmap coredns编辑了默认的core文件,并将:53替换为集群。本地:53。等待之后,事

我有一个相当标准的Kubernetes安装,在Ubuntu上作为单节点集群运行。我正在尝试配置CoreDNS以解析Kubernetes集群内的所有内部服务和一些外部域名。到目前为止,我只是在做实验。我首先创建了一个busybox pod,如下所示:

在我对corefile进行更改之前,一切都按照指南中的描述进行。我看到了几个问题:

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

    .:53{
        log
    }
    
    似乎corefile无法编译或其他什么。POD看起来很健康,不会向日志报告任何错误,但请求都会挂起并失败

  • 我曾尝试添加日志插件,但这不起作用,因为该插件仅应用于与该插件匹配的域,或者域名不匹配,或者corefile被破坏

    为了透明起见,这是我的新corefile:

    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
    }
    

    看起来您的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
    版本:v1
    数据:
    核心文件:|
    集群.本地:53{
    日志
    错误
    健康
    kubernetes cluster.local in-addr.arpa ip6.arpa{
    豆荚不安全
    上游
    故障插入地址r.arpa ip6.arpa
    }
    普罗米修斯:9153
    代理./etc/resolv.conf
    缓存30
    环
    重新加载
    负载平衡
    }
    种类:配置地图
    元数据:
    creationTimestamp:空
    名称:coredns

    然后使用
    vi
    编辑并保存
    coredns
    configmap。保存后,将应用更改。

    FYI-在上面的示例中,您可能必须使用
    转发
    而不是
    代理
    $ kubectl -n kube-system edit configmaps coredns -o yaml