k8s_external

原始碼

k8s_external 解析來自 Kubernetes 叢集外部的負載平衡器、外部 IP,如果啟用無頭服務,也會解析它們。

說明

此外掛程式允許額外的區域解析 Kubernetes 服務和無頭服務的外部 IP 位址。此外掛程式僅在同時載入 kubernetes 外掛程式時才有用。

此外掛程式使用外部區域來解析叢集內的 IP 位址。它只處理 A、AAAA、SRV 和 PTR 記錄的查詢;為了使其成為適當的 DNS 區域,它處理區域頂點的 SOA 和 NS 查詢。

預設情況下,區域的頂點將如下所示(假設使用的區域是 example.org

example.org.	5 IN	SOA ns1.dns.example.org. hostmaster.example.org. (
				12345      ; serial
				14400      ; refresh (4 hours)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				5          ; minimum (4 hours)
				)
example.org		5 IN	NS ns1.dns.example.org.

ns1.dns.example.org.  5 IN  A    ....
ns1.dns.example.org.  5 IN  AAAA ....

請注意,我們使用 dns 子網域來存放 DNS 所需的記錄(請參閱 apex 指令)。另請注意,SOA 的序號是靜態的。名稱伺服器記錄的 IP 位址是 CoreDNS 服務的 IP 位址。

k8s_external 外掛程式處理 dns 子網域和區域本身的頂點;所有其他查詢都會解析為叢集中的位址。

語法

k8s_external [ZONE...]
  • ZONES k8s_external 應該具有授權性的區域。

如果您想要變更頂點網域或為傳回的記錄使用不同的 TTL,您可以使用此擴充語法。

k8s_external [ZONE...] {
    apex APEX
    ttl TTL
}
  • APEX 是用於頂點記錄的名稱(DNS 標籤);預設為 dns
  • ttl 允許您為回應設定自訂的 TTL。預設值為 5 (秒)。

如果您想要啟用無頭服務解析,您可以透過新增 headless 選項來達成。

k8s_external [ZONE...] {
    headless
}
  • 如果存在設定了外部 IP 的無頭服務,將會解析外部 IP

如果查詢的網域不存在,您可以透過新增 fallthrough 選項來讓查詢傳遞給下一個外掛程式。

k8s_external [ZONE...] {
    fallthrough [ZONE...]
}

範例

啟用 example.org 下的名稱解析為叢集內 DNS 位址。

. {
   kubernetes cluster.local
   k8s_external example.org
}

在上面的 Corefile 中,以下服務將會為 test.default.example.org 取得一個 IP 位址為 192.168.200.123A 記錄。

apiVersion: v1
kind: Service
metadata:
 name: test
 namespace: default
spec:
 clusterIP: None
 externalIPs:
 - 192.168.200.123
 type: ClusterIP

k8s_external 外掛程式可以與 transfer 外掛程式結合使用以啟用區域傳輸。不支援通知。

    . {
        transfer example.org {
            to *
        }
        kubernetes cluster.local
        k8s_external example.org
    }

使用 fallthrough 選項,如果查詢的網域不存在,它將會傳遞給下一個符合該區域的外掛程式。

. {
   kubernetes cluster.local
   k8s_external example.org {
     fallthrough
   }
   forward . 8.8.8.8
}

參閱

如需一些背景資訊,請參閱 解析外部 IP 位址。以及 具有負載平衡器 IP 的服務的 A 記錄