說明
此外掛程式允許額外的區域解析 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.123
的 A
記錄。
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 記錄。