詳解:CoreDNS作為kubernetes後端的DNS伺服器
coredns之所以如此名聲大噪,就是因為從kubernetes1.9開始引入,作為kubernetes內部服務發現的預設dns。毫無疑問kubernetes是coredns的後端之一,所以我們講coredns,就從kubernetes作為其後端開始。 |
coredns的諸多特性網上很多文章都有提及,在這裡不再贅述。簡單對比下其相對於bind和skydns的優勢:
bind可以將解析儲存到mysql或者檔案中,coredns也可以將解析儲存到etcd或者檔案中,也支援將kubernetes作為其後端,直接呼叫kubernetes的api獲取解析資料,然後快取到本地記憶體。coredns支援外掛擴充套件,目前在第三方外掛中還同時支援將powerdns及amazondns作為其後端,後續還會支援越來越來的後端。bind在kubernetes的應用場景下,基本無用武之地。
coredns本身就是skydns的繼任者,支援skydns的所有特性,而且效能更好,更易於擴充套件。其外掛式特性無論是bind還是skydns都無法比擬。
coredns官方網站地址:
coredns程式碼地址:
coredns官方外掛地址:
coredns第三方外掛地址:
其實官方有kubernetes外掛的相關示例及配置說明,地址如下:
我這裡就以官方的配置示例作說明:
kubernetes [ZONES...] { resyncperiod DURATION endpoint URL [URL...] tls CERT KEY CACERT namespaces NAMESPACE... labels EXPRESSION pods POD-MODE endpoint_pod_names upstream [ADDRESS...] ttl TTL fallthrough [ZONES...] }
下面對一些常用引數作下說明:
resyncperiod: 用於從kubernetes的api同步資料的時間間隔
endpoint: 指定kubernetes的api地址,coredns會自動對其執行健康檢查並將請求代理到健康的節點上。示例如下:
endpoint
tls: 用於指定連線遠端kubernetes api的相關證書。示例:
tls admin.pem admin-key.pem ca.pem
pods: 指定POD-MODE,有以下三種:
disabled:預設
insecure:返回一個A記錄對應的ip,但並不會檢查這個ip對應的Pod當前是否存在。這個選項主要用於相容kube-dns
verified:推薦的方式,返回A記錄的同時會確保對應ip的pod存在。比insecure會消耗更多的記憶體。
upstream: 定義外部域名解析轉發的地址,可以是一個ip地址,也可以是一個resolv.conf檔案。示例:
upstream 8.8.8.8:53 8.8.4.4:53
ttl: 預設5s,最大3600s
一個完整的配置示例:
# /opt/coredns/cfg/Corefile .:53 { kubernetes wh01 { resyncperiod 10s endpoint tls admin.pem admin-key.pem ca.pem pods verified endpoint_pod_names upstream /etc/resolv.conf } health log /var/log/coredns.log prometheus :9153 proxy . /etc/resolv.conf cache 30 reload 10s }
也可以使用如下寫法:
wh01 { kubernetes { resyncperiod 10s endpoint tls admin.pem admin-key.pem ca.pem pods verified endpoint_pod_names upstream /etc/resolv.conf } health log errors prometheus :9153 proxy . /etc/resolv.conf cache 30 reload 10s }
其他配置也簡單作下說明:
health:外掛,用於檢測當前配置是否存活,預設監聽http 8080埠,可配置
log: 外掛,將日誌列印到標準輸出
errors:將錯誤列印到標準輸出
prometheus: 外掛,用於prometheus監控
proxy: wh01之外的域名解析都透過proxy指定的地址實現代理
cache: 外掛,用於在記憶體中快取dns解析,單位為s
reload: 外掛,單位為s,如果配置檔案發生變更,自動reload的間隔
nohup /opt/coredns/bin/coredns -conf /opt/coredns/cfg/Corefile &
# cat /lib/systemd/system/coredns.service [Unit] Description=CoreDNS Documentation= [Service] ExecStart=/opt/coredns/bin/coredns \ -conf /opt/coredns/cfg/Corefile Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.targe
# systemctl start coredns # systemctl enable coredns
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2700339/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 CoreDNS 來應對 DNS 汙染DNS
- 為什麼我推薦Nginx作為後端伺服器代理Nginx後端伺服器
- 用 Git 作為聊天應用的後端Git後端
- kubernetes實踐之六十四:CoreDNSDNS
- DNS 配置單純為轉發的DNS伺服器DNS伺服器
- 詳解 DNS 解析DNS
- 使用NFS作為Glance儲存後端NFS後端
- 使用postgresql作為 bootstrap tree view 後端SQLbootView後端
- Laravel後臺作為客戶端,socket.io作為服務端,App或其他作為另一個客戶端Laravel客戶端服務端APP
- solaris11進行dns客戶端配置詳解DNS客戶端
- 為什麼DNS使用UDP而不是TCP詳解!DNSUDPTCP
- k8s叢集配置使用coredns代替kube-dnsK8SDNS
- 作為後端開發者的思考:如何看待如今的前端架構後端前端架構
- [譯] DNS over TLS:端到端加密的 DNSDNSTLS加密
- DNS 查詢原理詳解DNS
- kubernetes實踐之六十八:部署 coredns 外掛DNS
- 郵件伺服器DNS設定-----MX、SPF、DKIM記錄詳解伺服器DNS
- Android客戶端請求伺服器端的詳細解釋Android客戶端伺服器
- linux下的dns設定詳解LinuxDNS
- PHP熟手使用Rust作為後端開發語言PHPRust後端
- Ruby作為伺服器端應用已經成熟了伺服器
- 轉:DNS解析過程詳解DNS
- DNS 請求報文詳解DNS
- DNS 響應報文詳解DNS
- 關於安裝DNS伺服器的新增步驟具體圖文詳解DNS伺服器
- 解決CoreDNS附加元件部署排查DNS元件
- MapReduce 過程詳解 (用WordCount作為例子)
- Redhat 5.8 作業系統上DNS詳細配置(DNS resolution for SCAN VIPs)Redhat作業系統DNS
- 使用queryperf對DNS伺服器作壓力測試DNS伺服器
- Nagios伺服器端配置檔案詳解(2)iOS伺服器
- Nagios伺服器端安裝部署詳解(1)iOS伺服器
- 詳解DNS重繫結攻擊DNS
- 談談前後端的分工協作後端
- Kubernetes 探針詳解!
- 伺服器dns怎麼設定 伺服器遠端登入教程伺服器DNS
- 解讀保護DNS伺服器的幾種方法DNS伺服器
- 國內DNS最快的伺服器 解析最快的dnsDNS伺服器
- Kubernetes上的負載均衡詳解負載