[Kubernetes] DNS setting in your Pod
DNS 在傳統的網路架構中一直扮演很重要的角色,可以讓用戶端透過 FQDN 的方式去存取目標的伺服器端,不需要去寫死對方的 IP 地址。然而在 kubernetes 的架構中, kubernetes 預設就會建立一套 DNS server 讓所有創建的 Pod 來使用。對於一般的使用者來說,只要能夠存取外面網路以及 Kubernetes Service 相關即可,然而在某些特殊的應用情境下,譬如目前喊行之有年的 NFV 架構中,我們的服務(Pod)本身可能會需要更複雜的網路架構,譬如同時存在 Data Network/Control Network. 這情況下,我們的 Pod 會需要特別去處理自己裡面服務所使用的 DNS Server 。 本文主要針對 Pod 裡面關於 DNS 相關的設定進行介紹,並且透過實際部屬 Yaml 的方式來看看到底如何使用。
[Kubernetes] DNS Setting When DnsPolicy Is Default
本文跟大家分享一個在實際部屬上遇到的問題,在不同的環境下,採用 dnsPolicy:Default 設定的 Kubernetes Pod 裡面所設定的 DNS Server 卻是完全不同的. 根據實際研究與觀察後,發現這個數字並不是單單的依靠 kubernetes 去處理,實際上也跟 Docker 本身如何去設定容器的 dns 也有關係,這部分就包含了宿主機的 /etc/resolv.conf 以及宿主機上 Docker 運行時的參數. 本文會先介紹這個問題,並且分享解決問題的思路以致於最後可以得到這個結論。
[Kubernetes] DNS Setting with Dockerd(原始碼分析上)
在前篇文章有跟大家分享過實際部屬上遇到的 DNS 問題,並且透過實驗佐證去觀察結果, 本篇文章則是透過另外一種觀點來觀察結果,透過閱讀原始碼的方式來觀察到底 kubernetes 再創建相關的 Pod 時會如何去處理 DNS 相關的設定,由於整個過程牽扯到 kubernetes 以及 CRI(Container Runtime Interface)的操作,而我們預設使用的則是 Docker 作為底層容器的操作. 由於篇幅過長,所以本文會著重於 kubernetes 原始碼的部分,而 Docker 相關的部分則會餘下篇文章來研究.
[Kubernetes] DNS Setting with Dockerd(原始碼分析下)
在前篇文章有跟大家分享過實際部屬上遇到的 DNS 問題,並且透過實驗佐證去觀察結果, 本篇文章則是透過另外一種觀點來觀察結果,透過閱讀原始碼的方式來觀察到底 kubernetes 再創建相關的 Pod 時會如何去處理 DNS 相關的設定,由於整個過程牽扯到 kubernetes 以及 CRI(Container Runtime Interface)的操作,而我們預設使用的則是 Docker 作為底層容器的操作. 本篇文章會針對後半部分,也就是所謂的 docker(dockerd) 本身再創建容器的時候,會如何處理其 DNS 相關的設定,透過閱讀 docker-ce 以及 libnetwork 相關的原始碼,不但能夠更清楚的釐清全部的運作原理,也能夠學習到 docker 底層實踐的過程與精神