前言
CoreDNS
近日在工作中修改DNS,由于CoreDNS pod數(shù)量比較多,習(xí)慣性地使用腳本批量重啟,隨之引發(fā)了Nginx ingress的告警,有大量超時(shí)的請(qǐng)求發(fā)生,開始并未意識(shí)到是修改CoreDNS的原因,后來(lái)看故障時(shí)間與批量重啟時(shí)間一致,才意識(shí)到是同一個(gè)問(wèn)題,K8S 內(nèi)部service通信其實(shí)也要經(jīng)過(guò)CoreDNS。同時(shí)發(fā)現(xiàn)這塊監(jiān)控缺失,亡羊補(bǔ)牢,為時(shí)不晚,添加監(jiān)控,規(guī)范操作,避免此類低級(jí)問(wèn)題再次出現(xiàn)。
CoreDNS簡(jiǎn)介
CoreDNS
CoreDNS 是一個(gè)從 Caddy 中 Fork 出來(lái)的項(xiàng)目(同時(shí)繼承了它的鏈?zhǔn)街虚g件風(fēng)格),作為 CNCF 項(xiàng)目中的一員,它的目標(biāo)是提供一個(gè)快速且靈活的 DNS 服務(wù)。
CoreDNS在Kubernetes1.11版本已經(jīng)作為GA功能釋放,成為Kubernetes默認(rèn)的DNS服務(wù)替代了Kube-DNS,目前是kubeadm、kube-up、minikube和kops安裝工具的默認(rèn)選項(xiàng)。
監(jiān)控CoreDNS
CoreDNS
開啟CoreDNS性能指標(biāo)
前提是需有一套K8S集群,使用CoreDNS作為內(nèi)部的域名解析系統(tǒng),同時(shí)集群內(nèi)設(shè)置了Prometheus作為指標(biāo)收集。
$ kubectl edit deployment coredns -n kube-system
.....
34 metadata:
35 annotations:
36 prometheus.io/path: /metrics
37 prometheus.io/port: "9153"
38 prometheus.io/scrape: "true"
39 creationTimestamp: null
.....
默認(rèn)監(jiān)聽的地址為: :9253/metrics,在Prometheus中配置target之后就可以采集coredns性能數(shù)據(jù)了。
- job_name: coredns
static_configs:
- targets:
- xxx:9153
labels:
instance: coredns
CoreDNS性能指標(biāo)列表
性能指標(biāo)列表
CoreDNS監(jiān)控指標(biāo)
coredns_dns_request_count_total指標(biāo)
coredns_dns_request_count_total
coredns_dns_request_size_bytes指標(biāo)
coredns_dns_request_size_bytes
le維度取值范圍:0, 100, 200, 300, 400, 511, 1023, 2047, 4095, 8291, 16000, 32000, 48000, 64000.
coredns_dns_request_duration_seconds指標(biāo)
coredns_dns_request_duration_seconds
le維度取值范圍:0.00025,0.0005,..., 后一個(gè)以前值的2倍數(shù)增加,最多16個(gè),最后一個(gè)lnf為無(wú)窮大。
coredns_dns_request_type_count_total指標(biāo)
coredns_dns_request_type_count_total
DNS記錄類型:
DNS記錄類型
coredns_dns_response_size_bytes指標(biāo)
coredns_dns_response_size_bytes
le維度取值范圍:0, 100, 200, 300, 400, 511, 1023, 2047, 4095, 8291, 16000, 32000, 48000, 64000.
coredns_panic_count_total指標(biāo)
進(jìn)程出現(xiàn)中斷的次數(shù)
coredns_dns_response_rcode_count_total指標(biāo)
coredns_dns_response_rcode_count_total
常見狀態(tài)碼:
常見狀態(tài)碼
結(jié)束語(yǔ)
希望大家對(duì)生產(chǎn)環(huán)境有一顆敬畏之心,操作需要謹(jǐn)慎再謹(jǐn)慎。目前CoreDNS以上每個(gè)基本指標(biāo)都已經(jīng)做了監(jiān)控,可能方式比較low,但是好勝于無(wú),以后慢慢優(yōu)化吧。如果有不對(duì)的地方,歡迎大家批評(píng)指正,共同學(xué)習(xí)。