【K8s 精選】CKA - 如何配置和使用 CoreDNS

1. CoreDNS 簡(jiǎn)介

CoreDNS 是插拔化的 DNS 服務(wù)器泽示,即 CoreDNS 內(nèi)部采用插件機(jī)制,所有功能都是插件形式編寫蜜氨。用戶可以使用 Corefile 來配置功能械筛,甚至可以自定義插件擴(kuò)展 CoreDNS。 CoreDNS 總體的工作流程如下:

image.png

2.如何配置 CoreDNS

參考 CoreDNS 的安裝命令CoreDNS 的 Corefile 配置文件

2.1 CoreDNS 的安裝步驟

$kubeadm init phase addon coredns [flags]
#flags 如下選項(xiàng)
--config string
kubeadm 配置文件的路徑飒炎。
--feature-gates string
一組用來描述各種功能特性的鍵值(key=value)對(duì)埋哟。選項(xiàng)是:
IPv6DualStack=true|false (ALPHA - 默認(rèn)值=false)
-h, --help
coredns 操作的幫助命令
--image-repository string     默認(rèn)值:"k8s.gcr.io"
選擇用于拉取控制平面鏡像的容器倉庫
--kubeconfig string     默認(rèn)值:"/etc/kubernetes/admin.conf"
與集群通信時(shí)使用的 kubeconfig 文件。如果未設(shè)置該參數(shù)郎汪,則可以在一組標(biāo)準(zhǔn)位置中搜索現(xiàn)有的 kubeconfig 文件赤赊。
--kubernetes-version string     默認(rèn)值:"stable-1"
為控制平面選擇特定的 Kubernetes 版本闯狱。
--service-cidr string     默認(rèn)值:"10.96.0.0/12"
為服務(wù) VIP 選擇 IP 地址范圍。
--service-dns-domain string     默認(rèn)值:"cluster.local"
服務(wù)使用其它的域名抛计,例如:"myorg.internal"哄孤。

#kubeadm init phase 安裝 CoreDNS 命令樣例
$kubeadm init phase addon coredns --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20

2.2 CoreDNS 請(qǐng)求處理工作流和 Corefile 文件詳解

2.2.1 CoreDNS 請(qǐng)求處理工作流

CoreDNS 的 Corefile 配置文件:

coredns.io:5300 {
file /etc/coredns/zones/coredns.io.db
}
example.io:53 {
errors
log
file /etc/coredns/zones/example.io.db
}
example.net:53 {
file /etc/coredns/zones/example.net.db
}
.:53 {
errors
log
health
rewrite name foo.example.com foo.default.svc.cluster.local
}

通過 Corefile 配置文件可知,兩個(gè)定義的 DNS Server吹截,分別監(jiān)聽 5300 和 53 端口录豺,即 CoreDNS 的請(qǐng)求處理邏輯,如下圖所示饭弓。

image.png

2.2.2 Corefile 配置文件詳解

集群管理員可以修改 CoreDNS CorefileConfigMap,以更改服務(wù)發(fā)現(xiàn)的工作方式媒抠。

Corefile 配置文件格式如下:

ZONE:[PORT] {
[PLUGIN] ...
}
? ZONE:定義DNS server負(fù)責(zé)的zone弟断,PORT是可選項(xiàng),默認(rèn)為53趴生;
? PLUGIN:定義DNS server要加載的插件阀趴,每個(gè)插件可以有多個(gè)參數(shù)。

在 Kubernetes 中苍匆,CoreDNS 安裝時(shí)使用如下默認(rèn) Corefile 配置:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health { 
            lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }    

Corefile 配置文件說明:
errors:錯(cuò)誤記錄到標(biāo)準(zhǔn)輸出刘急。
health:在 http://localhost:8080/health 處提供 CoreDNS 的健康報(bào)告。
ready:#在端口 8181 上提供的一個(gè) HTTP 末端浸踩,當(dāng)所有能夠 表達(dá)自身就緒的插件都已就緒時(shí)叔汁,在此末端返回 200 OK。
kubernetes:處理 k8s 域名解析检碗,ttl 表示響應(yīng)的超時(shí)時(shí)間据块。
prometheus:CoreDNS 的度量指標(biāo)值以 Prometheus 格式在 http://localhost:9153/metrics 上提供。
forward:不在 Kubernetes 集群域內(nèi)的任何查詢都將轉(zhuǎn)發(fā)到 預(yù)定義的解析器 (/etc/resolv.conf)折剃。
cache:?jiǎn)⒂们岸司彺妗?br> ● loop:檢測(cè)到簡(jiǎn)單的轉(zhuǎn)發(fā)環(huán)另假,如果發(fā)現(xiàn)死循環(huán),則中止 CoreDNS 進(jìn)程怕犁。
reload:允許自動(dòng)重新加載已更改的 Corefile边篮。 編輯 ConfigMap 配置后,請(qǐng)等待兩分鐘奏甫,以使更改生效戈轿。
loadbalance:這是一個(gè)輪轉(zhuǎn)式 DNS 負(fù)載均衡器, 它在應(yīng)答中隨機(jī)分配 A扶檐、AAAA 和 MX 記錄的順序凶杖。

3.如何使用 CoreDNS

自定義 DNS 設(shè)置的 Pod 示例:

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: pod-dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 10.96.0.10
    searches:
      - default.svc.cluster.local
      - svc.cluster.local
      - cluster.local
      - openstacklocal
    options:
      - name: ndots
        value: "4"
      - name: edns0

創(chuàng)建上面的 Pod 后,容器 test 會(huì)在其 /etc/resolv.conf 文件內(nèi)容如下所示款筑,可以查看命令是 kubectl exec -it dns-example -- cat /etc/resolv.conf智蝠。

nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local openstacklocal
options ndots:4 edns0

/etc/resolv.conf 文件解析
nameserver 表示 CoreDNS 的 ClusterIP
search 表示域名解析時(shí)候腾么,依次添加后綴
options 表示當(dāng)域名包含的 “.” 少于 n 個(gè)的時(shí)候,則先添加 search 后綴杈湾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末解虱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漆撞,更是在濱河造成了極大的恐慌殴泰,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浮驳,死亡現(xiàn)場(chǎng)離奇詭異悍汛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)至会,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門离咐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奉件,你說我怎么就攤上這事宵蛀。” “怎么了县貌?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵术陶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我煤痕,道長(zhǎng)梧宫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任摆碉,我火速辦了婚禮祟敛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兆解。我一直安慰自己馆铁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布锅睛。 她就那樣靜靜地躺著埠巨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪现拒。 梳的紋絲不亂的頭發(fā)上辣垒,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音印蔬,去河邊找鬼勋桶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的例驹。 我是一名探鬼主播捐韩,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鹃锈!你這毒婦竟也來了荤胁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤屎债,失蹤者是張志新(化名)和其女友劉穎仅政,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盆驹,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圆丹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躯喇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片运褪。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖玖瘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檀咙,我是刑警寧澤雅倒,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站弧可,受9級(jí)特大地震影響蔑匣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棕诵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一裁良、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧校套,春花似錦价脾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妹孙,卻和暖如春秋柄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蠢正。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工骇笔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓笨触,卻偏偏與公主長(zhǎng)得像懦傍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旭旭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容