9.coredns元件詳解
阿新 • • 發佈:2022-03-03
1.DNS是什麼?
DNS全稱是Domain Name System:域名系統,是整個網際網路的電話簿,它能夠將可被人理解的域名翻譯成可被機器理解IP地址,使得網際網路的使用者不再需要直接接觸很難閱讀和理解的IP地址。域名系統在現在的網際網路中非常重要,因為伺服器的 IP 地址可能會經常變動,如果沒有了 DNS,那麼可能 IP 地址一旦發生了更改,當前伺服器的客戶端就沒有辦法連線到目標的伺服器了,如果我們為 IP 地址提供一個『別名』並在其發生變動時修改別名和 IP 地址的關係,那麼我們就可以保證叢集對外提供的服務能夠相對穩定地被其他客戶端訪問。DNS 其實就是一個分散式的樹狀命名系統,它就像一個去中心化的分散式資料庫,儲存著從域名到 IP 地址的對映。
2.CoreDNS是什麼?
CoreDNS 其實就是一個 DNS 服務,而 DNS 作為一種常見的服務發現手段,所以很多開源專案以及工程師都會使用 CoreDNS 為叢集提供服務發現的功能,Kubernetes 就在叢集中使用 CoreDNS 解決服務發現的問題。 作為一個加入 CNCF(Cloud Native Computing Foundation)的服務, CoreDNS 的實現非常簡單。
3.驗證coredns
dig.yaml
apiVersion: v1 kind: Pod metadata: name: dig namespace: default spec: containers: - name: dig image: /dig:latest command: - sleep - "3600" imagePullPolicy: IfNotPresent restartPolicy: Always
更新資源清單檔案
[root@master1 ~]# kubectl apply -f dig.yaml
pod/dig configured
檢視預設名稱空間的kubernetes服務
[root@master1 ~]# kubectl get svc | grep kubernetes
kubernetes ClusterIP 10.96.0.1 443/TCP 5d13h
解析dns,如有以下返回說明dns安裝成功
[root@master1 ~]# kubectl exec -it dig -- nslookup kubernetes Server:10.96.0.10 Address:10.96.0.10#53 Name:kubernetes.default.svc.cluster.local Address: 10.96.0.1
kubernetes.default.svc.cluster.local
服務名.名稱空間.預設字尾
在k8s中建立service之後,service預設的FQDN是