日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes自定義DNS服務

自定義 DNS 服務

本頁說明如何配置 DNS Pod(s),以及定制集群中 DNS 解析過程。

公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出臨淄免費做網(wǎng)站回饋大家。

在開始之前

你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構建:

  • Katacoda
  • 玩轉 Kubernetes

您的 Kubernetes 服務器必須為 v1.12 或更高版本。 要檢查版本,請輸入 ?kubectl version?。

你的集群必須運行 CoreDNS 插件。 文檔遷移到 CoreDNS 解釋了如何使用 ?kubeadm ?從 ?kube-dns? 遷移到 CoreDNS。

介紹

DNS 是使用集群插件 管理器自動啟動的內置的 Kubernetes 服務。

從 Kubernetes v1.12 開始,CoreDNS 是推薦的 DNS 服務器,取代了 kube-dns。 如果 你的集群原來使用 kube-dns,你可能部署的仍然是 ?kube-dns? 而不是 CoreDNS。

Note: CoreDNS 服務在其 ?metadata.name? 字段被命名為 ?kube-dns?。 這是為了能夠與依靠傳統(tǒng) ?kube-dns? 服務名稱來解析集群內部地址的工作負載具有更好的互操作性。 使用 ?kube-dns? 作為服務名稱可以抽離共有名稱之后運行的是哪個 DNS 提供程序這一實現(xiàn)細節(jié)。

如果你在使用 Deployment 運行 CoreDNS,則該 Deployment 通常會向外暴露為一個具有 靜態(tài) IP 地址 Kubernetes 服務。 kubelet 使用 ?--cluster-dns=? 標志將 DNS 解析器的信息傳遞給每個容器。

DNS 名稱也需要域名。 你可在 kubelet 中使用 ?--cluster-domain=<默認本地域名>? 標志配置本地域名。

DNS 服務器支持正向查找(A 和 AAAA 記錄)、端口發(fā)現(xiàn)(SRV 記錄)、反向 IP 地址發(fā)現(xiàn)(PTR 記錄)等。

如果 Pod 的 ?dnsPolicy ?設置為 "?default?",則它將從 Pod 運行所在節(jié)點繼承名稱解析配置。 Pod 的 DNS 解析行為應該與節(jié)點相同。

如果你不想這樣做,或者想要為 Pod 使用其他 DNS 配置,則可以 使用 kubelet 的 ?--resolv-conf? 標志。 將此標志設置為 "" 可以避免 Pod 繼承 DNS。 將其設置為有別于 ?/etc/resolv.conf? 的有效文件路徑可以設定 DNS 繼承不同的配置。

CoreDNS

CoreDNS 是通用的權威 DNS 服務器,可以用作集群 DNS,符合 DNS 規(guī)范。

CoreDNS ConfigMap 選項 

CoreDNS 是模塊化且可插拔的 DNS 服務器,每個插件都為 CoreDNS 添加了新功能。 可以通過維護 Corefile,即 CoreDNS 配置文件, 來定制其行為。 集群管理員可以修改 CoreDNS Corefile 的 ConfigMap,以更改服務發(fā)現(xiàn)的工作方式。

在 Kubernetes 中,CoreDNS 安裝時使用如下默認 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 配置包括以下 CoreDNS 插件:

  • errors:錯誤記錄到標準輸出。
  • health:在 http://localhost:8080/health 處提供 CoreDNS 的健康報告。
  • ready:在端口 8181 上提供的一個 HTTP 末端,當所有能夠 表達自身就緒的插件都已就緒時,在此末端返回 200 OK。
  • kubernetes:CoreDNS 將基于 Kubernetes 的服務和 Pod 的 IP 答復 DNS 查詢。你可以在 CoreDNS 網(wǎng)站閱讀更多細節(jié)。 你可以使用 ?ttl ?來定制響應的 TTL。默認值是 5 秒鐘。TTL 的最小值可以是 0 秒鐘, 最大值為 3600 秒。將 TTL 設置為 0 可以禁止對 DNS 記錄進行緩存。
  • ?pods insecure? 選項是為了與 kube-dns 向后兼容。你可以使用 ?pods verified? 選項,該選項使得 僅在相同名稱空間中存在具有匹配 IP 的 Pod 時才返回 A 記錄。如果你不使用 Pod 記錄,則可以使用 ?pods disabled? 選項。

  • prometheus:CoreDNS 的度量指標值以 Prometheus 格式在 http://localhost:9153/metrics 上提供。
  • forward: 不在 Kubernetes 集群域內的任何查詢都將轉發(fā)到 預定義的解析器 (/etc/resolv.conf).
  • cache:啟用前端緩存。
  • loop:檢測到簡單的轉發(fā)環(huán),如果發(fā)現(xiàn)死循環(huán),則中止 CoreDNS 進程。
  • reload:允許自動重新加載已更改的 Corefile。 編輯 ConfigMap 配置后,請等待兩分鐘,以使更改生效。
  • loadbalance:這是一個輪轉式 DNS 負載均衡器, 它在應答中隨機分配 A、AAAA 和 MX 記錄的順序。

你可以通過修改 ConfigMap 來更改默認的 CoreDNS 行為。

使用 CoreDNS 配置存根域和上游域名服務器

CoreDNS 能夠使用 forward 插件配置存根域和上游域名服務器。

示例

如果集群操作員在 10.150.0.1 處運行了 Consul 域服務器, 且所有 Consul 名稱都帶有后綴 ?.consul.local?。要在 CoreDNS 中對其進行配置, 集群管理員可以在 CoreDNS 的 ConfigMap 中創(chuàng)建加入以下字段。

consul.local:53 {
        errors
        cache 30
        forward . 10.150.0.1
    }

要顯式強制所有非集群 DNS 查找通過特定的域名服務器(位于 172.16.0.1),可將 ?forward ?指向該域名服務器,而不是 ?/etc/resolv.conf?。

forward .  172.16.0.1

最終的包含默認的 ?Corefile ?配置的 ConfigMap 如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . 172.16.0.1
        cache 30
        loop
        reload
        loadbalance
    }
    consul.local:53 {
        errors
        cache 30
        forward . 10.150.0.1
    } 

工具 ?kubeadm ?支持將 kube-dns ConfigMap 自動轉換為 CoreDNS ConfigMap。

Note: 盡管 kube-dns 接受 FQDN(例如:ns.foo.com)作為存根域和名字服務器,CoreDNS 不支持此功能。 轉換期間,CoreDNS 配置中將忽略所有的 FQDN 域名服務器。

CoreDNS 配置等同于 kube-dns

CoreDNS 不僅僅提供 kube-dns 的功能。 為 kube-dns 創(chuàng)建的 ConfigMap 支持 ?StubDomains ?和 ?upstreamNameservers ?轉換為 CoreDNS 中的 ?forward ?插件。

示例

用于 kubedns 的此示例 ConfigMap 描述了 stubdomains 和 upstreamnameservers:

apiVersion: v1
data:
  stubDomains: |
        {"abc.com" : ["1.2.3.4"], "my.cluster.local" : ["2.3.4.5"]}
  upstreamNameservers: |
        ["8.8.8.8", "8.8.4.4"]
kind: ConfigMap

CoreDNS 中的等效配置將創(chuàng)建一個 Corefile:

  • 針對 stubDomains:
  • abc.com:53 {
         errors
         cache 30
         proxy . 1.2.3.4
     }
     my.cluster.local:53 {
         errors
         cache 30
         proxy . 2.3.4.5
     }

帶有默認插件的完整 Corefile:

.:53 {
    errors
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
    }
    federation cluster.local {
       foo foo.feddomain.com
    }
    prometheus :9153
    forward .  8.8.8.8 8.8.4.4
    cache 30
}
abc.com:53 {
    errors
    cache 30
    forward . 1.2.3.4
}
my.cluster.local:53 {
    errors
    cache 30
    forward . 2.3.4.5
}

遷移到 CoreDNS

要從 kube-dns 遷移到 CoreDNS,此博客 提供了幫助用戶將 kube-dns 替換為 CoreDNS。 集群管理員還可以使用部署腳本 進行遷移。


分享名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes自定義DNS服務
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/djppgcg.html