全部產品
Search
文件中心

Container Service for Kubernetes:CoreDNS自訂配置

更新時間:Jan 18, 2025

ACK Edge叢集預設採用CoreDNS作為DNS伺服器,並且採用DaemonSet方式將CoreDNS部署在每個邊緣節點上。本文主要介紹ACK Edge叢集中CoreDNS的預設配置以及CoreDNS擴充配置中如何自訂配置Hosts。

CoreDNS配置入口

kube-system命名空間下的coredns配置項主要用於管理和配置CoreDNS服務,配置項操作入口如下:

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 配置項

  3. 配置項頁面頂部設定命名空間為kube-system,搜尋coredns配置項,單擊coredns右側操作列下的YAML 編輯,查看或自訂CoreDNS配置資訊。

CoreDNS預設配置

不同CoreDNS版本的配置項略有差異,以下是ACK Edge叢集中,1.11版本CoreDNS的預設配置。

.:53 {
    errors
    health {
       lameduck 15s
    }
    hosts /etc/edge/tunnel-nodes {
        reload 300ms
        fallthrough
    }        
    ready
    kubeapi
    k8s_event {
      level info error warning
    }

    kubernetes cluster.local in-addr.arpa ip6.arpa {
      pods disabled
      ttl 30
      fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . /etc/resolv.conf {
      prefer_udp
    }
    cache 30
    log
    loop
    reload
    loadbalance
}

關鍵參數說明如下:

參數

描述

errors

錯誤資訊到標準輸出。

health

CoreDNS自身健康狀態報表,預設監聽連接埠8080,一般用來做健全狀態檢查。您可以通過http://localhost:8080/health擷取健康狀態。

hosts

CoreDNS Hosts外掛程式,指定網域名稱與地址的映射關係。

重要

ACK Edge叢集佔用了此處預設域的Hosts配置,請勿在此處添加額外配置。如有Hosts配置需求,請參見下文Hosts自訂配置

ready

CoreDNS外掛程式狀態報表,預設監聽連接埠8181,一般用於可讀性檢查。可以通過http://localhost:8181/ready擷取可讀狀態。當所有外掛程式都運行後,ready狀態為200。

kubernetes

CoreDNS Kubernetes外掛程式,提供叢集內服務解析能力。

prometheus

CoreDNS自身metrics資料介面可以通過http://localhost:9153/metrics擷取Prometheus格式的監控資料。

forward(或proxy

將網域名稱查詢請求轉寄到預定義的DNS伺服器。預設配置中,當網域名稱不在Kubernetes域時,將請求轉寄到預定義的解析器(/etc/resolv.conf)中。預設使用宿主機的/etc/resolv.conf配置。

cache

DNS緩衝。當從後端(上遊、資料庫等)擷取資料的成本較高時,緩衝可以有效提高效能。

loop

環路檢測,如果檢測到環路,則停止CoreDNS。

reload

允許自動重新載入已更改的Corefile。編輯ConfigMap配置後,請等待兩分鐘以使更改生效。

loadbalance

迴圈DNS負載平衡器,可以在答案中隨機A、AAAA、MX記錄的順序。

Hosts自訂配置

如果您需要為特定網域名稱指定Hosts,例如為www.hello.example.com指定IP為127.0.0.1,您可以使用Hosts外掛程式進行配置,修改配置前請仔細閱讀CoreDNS官方文檔

由於ACK Edge叢集佔用了預設域的Hosts配置,您需要建立一個域,例如 example.com:53表示匹配尾碼為example.com的網域名稱,然後在建立的網域名稱中配置Hosts www.hello.example.com和地址127.0.0.1

配置樣本

.:53 {
    errors
    health {
       lameduck 15s
    }
    hosts /etc/edge/tunnel-nodes {
        reload 300ms
        fallthrough
    }        
    ready
    kubeapi
    k8s_event {
      level info error warning
    }

    kubernetes cluster.local in-addr.arpa ip6.arpa {
      pods disabled
      ttl 30
      fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . /etc/resolv.conf {
      prefer_udp
    }
    cache 30
    log
    loop
    reload
    loadbalance
}
example.com:53 {   # 新增網域名稱。
    errors
    hosts {
      127.0.0.1 www.hello.example.com  # 網域名稱解析。
      fallthrough
    }
    cache 30
    forward . /etc/resolv.conf {
      prefer_udp
    }
}

更多CoreDNS配置,請參見CoreDNS配置說明

相關文檔