Amazon Elastic Kubernetes Service (Amazon EKS) クラスターで、条件付きフォワーダーを CoreDNS を使用して設定したいと考えています。
簡単な説明
CoreDNS を使用すると、カスタマイズされた DNS サーバーによって解決されるドメインに送信される DNS クエリのために条件付き転送を設定できます。詳細については、Kubernetes ウェブサイトで Customizing DNS Service を参照してください。
重要: 次の解決方法の変更は、セルフマネージド CoreDNS にのみ適用してください。CoreDNS Amazon EKS アドオンの設定変更を実行するには、Amazon EKS アドオンの設定で、Amazon EKS が管理する設定を確認します。Amazon EKS によって管理されるフィールドを変更すると Amazon EKS がアドオンを管理できなくなるため、変更する前にアドオンの設定を確認してください。これにより、アドオンが更新されたときに変更が上書きされる可能性があります。
解決方法
1. CoreDNS の ConfigMap を変更し条件付きフォワーダー設定を追加します。
$ kubectl -n kube-system edit configmap coredns
出力:
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
labels:
eks.amazonaws.com/component: coredns
k8s-app: kube-dns
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 . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
domain-name:53 {
errors
cache 30
forward . custom-dns-server
reload
}
注: domain-name はご自身のドメイン名に置き換えます。custom-dns-server のか所は、ご使用のカスタム DNS サーバーの IP アドレスに置き換えます。
2. ドメイン名の解決方法が機能することを確認します。
$ kubectl run busybox --restart=Never --image=busybox:1.28 -- sleep 3600
$ kubectl exec busybox -- nslookup domain-name
注: domain-name はご自身のドメイン名に置き換えます。