tencent cloud

Tencent Kubernetes Engine

TKEでのカスタムドメイン名解決の実現

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-04-26 19:23:11

ユースケース

Tencent Kubernetes Engine(TKE)またはTKE Serverlessを使用する際、内部のカスタムドメイン名解決の必要性がある場合があります。
クラスター外に集中型ストレージサービスをご自身で構築した場合は、クラスター内のモニタリングまたはログデータを収集し、固定の内部ドメイン名によってストレージサービスに送信する必要があります。
従来の業務をコンテナ化する過程で、一部のサービスのコードが固定ドメイン名を使用して内部の他のサービスを呼び出すように設定されていて、かつその設定が変更できない場合は、KubernetesのService名を使用して呼び出すことはできません。

方法の選択

ここではクラスターでカスタムドメイン名を使用して解決を行う、次の3種類の方法の例をご紹介します。
ション
メリット
シンプルかつ直観的であり、任意の解決レコードを追加できます。
解決レコードのIPアドレスを事前に知る必要はありませんが、解決レコードが指定するアドレスはクラスター内にデプロイされている必要があります。
大量の解決レコードを管理でき、レコードの管理はすべて自作DNSで行えるため、レコードの追加と削除の際にCoreDNS設定を変更する必要がありません。
説明
方法1と方法2では、解決レコードを追加する際に毎回CoreDNSプロファイルを変更する必要があります(再起動は不要です)。ご自身のニーズに応じて評価し、具体的な方法を選択してください。

方法の例

方法1:CoreDNS Hostsプラグインを使用して任意のドメイン名解決を設定する

1. 次のコマンドを実行し、CoreDNSのconfigmapを変更します。次に例を示します。
kubectl edit configmap coredns -n kube-system
2. hosts設定を変更し、ドメイン名をhostsに追加します。次に例を示します。
hosts {
192.168.1.6 harbor.example.com
192.168.1.8 es.example.com
fallthrough
}
説明
harbor.example.comは192.168.1.6を指定し、es.example.comは192.168.1.8を指定します。
完全な設定の例は次のとおりです。
apiVersion: v1
data:
Corefile: |2-
.:53 {
errors
health
kubernetes cluster.local. in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
hosts {
192.168.1.6 harbor.example.com
192.168.1.8 es.example.com
fallthrough
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
reload
loadbalance
}
kind: ConfigMap
metadata:
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: coredns
namespace: kube-system

方法2:CoreDNS Rewriteプラグインを使用してドメイン名をクラスター内サービスに指定する

カスタムドメイン名を使用したサービスをクラスターにデプロイしたい場合は、CoreDNSのRewriteプラグインを使用し、指定のドメイン名をあるServiceのClusterIPに解決することができます。
1. 次のコマンドを実行し、CoreDNSのconfigmapを変更します。次に例を示します。
kubectl edit configmap coredns -n kube-system
2. 次のコマンドを実行し、Rewrite設定を追加します。次に例を示します。
rewrite name es.example.com es.logging.svc.cluster.local
説明
es.example.comloggingネームスペース下にデプロイされたesサービスを指定します。複数のドメイン名がある場合は行を追加できます。
完全な設定の例は次のとおりです。
apiVersion: v1
data:
Corefile: |2-
.:53 {
errors
health
kubernetes cluster.local. in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
rewrite name es.example.com es.logging.svc.cluster.local
prometheus :9153
forward . /etc/resolv.conf
cache 30
reload
loadbalance
}
kind: ConfigMap
metadata:
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: coredns
namespace: kube-system

方法3:CoreDNS Forwardプラグインを使用して自作DNSをアップストリームDNSとして設定する

1. forward設定を確認します。forwardのデフォルト設定は次のとおりです。クラスター内以外のドメイン名がCoreDNSの所在ノード/etc/resolv.confファイル内に設定されたnameserverによって解決されることを指します。
forward . /etc/resolv.conf
2. forwardを設定し、/etc/resolv.confを自作DNSサーバーアドレスに明示的に置き換えます。次に例を示します。
forward . 10.10.10.10
完全な設定の例は次のとおりです。
apiVersion: v1
data:
Corefile: |2-
.:53 {
errors
health
kubernetes cluster.local. in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . 10.10.10.10
cache 30
reload
loadbalance
}
kind: ConfigMap
metadata:
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: coredns
namespace: kube-system
3. カスタムドメイン名の解決レコードを自作DNSに設定します。ノード上の/etc/resolv.conf内のnameserverを自作DNSのアップストリームに追加することをお勧めします。一部のサービスはTencent Cloud内部のDNS解決に依存しており、上記を自作DNSのアップストリームに設定しなければ、一部のサービスが正常に動作しなくなる場合があるためです。ここではBIND 9を例にとり、プロファイルを変更し、アップストリームDNSアドレスをforwardersに書き込みます。次に例を示します。
注意
自作DNS Serverとリクエスト元が同じRegionにない場合、クロスドメインアクセスをサポートしていない一部のTencentドメイン名が無効になる場合があります。
options {
forwarders {
183.60.83.19;
183.60.82.98;
};
...

参考ドキュメント

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック