1. 程式人生 > 其它 >9.coredns元件詳解

9.coredns元件詳解

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是..svc.cluster.local,那麼k8s叢集內部的服務就可以通過FQDN訪問

初學linux,每學到一點東西就寫一點,如有不對的地方,懇請包涵!