kuberneteskube-dnsservice介紹
kube-dns 是 kubernetes 基於 DNS 的服務發現模組,主要由三個容器組成,分別是 dnsmasq, kube-dns, sidecar,整體的結構如圖。
sidecar
sidecar 是一個監控健康模組,同時向外暴露metrics 記錄,但是為啥叫三蹦子不知道。
接受的探測引數是
--probe=<label>,<server>,<dnsname>[,<interval_seconds>][,<type>]
例子如下
--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,A
等於是每隔 5s 向127.0.0.1:53 進行 DNS 查詢 kubernetes.default.svc.cluster.local 的 A 記錄
對應的結構體是
dnsmasq
dnsmasq-nanny 是 dnsmasq 的保姆程式,dnsmasq 是一個簡易的 DNS server。
dnsmasq-nanny “–” 後面是 dnsmasq 的引數,比如下面這個參數列示的是把 server=/cluster.local/127.0.0.1#10053
當作 dnsmasq 的配置,10053 是 kube-dns 的地址,也就是把 cluster.local 的域名攔截轉到 kube-dns 進行解析,剩下的通過正常的域名解析流程。
--server=/cluster.local/127.0.0.1#10053
dnsmasq 簡單來說扮演的是叢集當中的一個傳統 dns server 並且把叢集內部的 dns 查詢攔截到 kube-dns 當中通過中心化的方法進行 dns 查詢,叢集的 dns 查詢主要依靠 kube-dns。
kube-dns
kube-dns 主要基於 skydns 來實現。
在 k8s.io/dns/pkg/dns/dns.go
的 KubeDNS.Start
下面有 endpoints 和 services 的 controllers,會把 service 註冊到 kube-dns 的 cache 當中 (k8s.io/dns/pkg/dns/treecache),這裡有 k8s 域名命名規範
主要的實現方式是 skydns 接受一個後端實現。
KubeDNS.Records
KubeDNS.ReverseRecord
基於 TreeCache 實現 DNS 記錄儲存的後端,從而使得 skydns 提供 DNS 服務。
總結
整體來說 kube-dns 還是一個比較簡單的模組,基於 kube-apiserver 的一個控制器,提供中心化的 DNS 查詢。
本文轉自kubernetes中文社群-kubernetes kube-dns service 介紹
相關文章
- 介紹
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- php介紹PHP
- CSRedisCore 介紹Redis
- BitMap介紹
- GeoServer介紹Server
- RabbitMQ 介紹MQ
- 模式介紹模式
- Pyzmq介紹MQ
- Java介紹Java
- css介紹CSS
- kafka介紹Kafka
- 【RESTEasy 介紹】REST
- Kafka 介紹Kafka
- PostgreSQLHooK介紹SQLHook
- nginx介紹Nginx
- 埠介紹
- MongoDB介紹MongoDB
- docker 介紹Docker
- TypeScript介紹TypeScript
- Smbclient介紹client
- JVM 介紹JVM
- Spark介紹Spark
- MQT介紹MQQT
- HttpClient介紹HTTPclient
- Mongoose介紹Go
- 個人介紹
- git介紹Git
- 自我介紹
- JCache 介紹
- Yocto 介紹
- Docker介紹Docker
- GO 介紹Go
- GraphRAG介紹
- github介紹Github
- Ceph介紹
- MySql介紹MySql
- 公文介紹