k8s_external

ソース

k8s_external はロードバランサーおよび外部 IP を Kubernetes クラスタの外部から解決し、ヘッドレスサービスを有効にする場合にも解決します。

説明

このプラグインを使用すると、追加のゾーンが Kubernetes service とヘッドレスサービスの外部 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 サービスのものです。

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 を使用すると、以下のサービスは 192.168.200.123 の IP アドレスを持つ test.default.example.orgA レコードを取得します。

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
}

関連項目

詳細については、resolve external IP addressA records for services with Load Balancer IP を参照してください。