Amazon Elastic Kubernetes Service (Amazon EKS) クラスターで CoreDNS を使用して条件付きフォワーダーを設定したいと考えています。
簡単な説明
CoreDNS を使用して、カスタマイズされた DNS サーバーが解決するドメインへ送信される、DNS クエリの条件付きフォワーダーを設定します。詳細については、Kubernetes ウェブサイトの「Customizing DNS service」を参照してください。
重要: CoreDNS Amazon EKS アドオンに対する設定変更を行う前に、Amazon EKS が管理する設定を決める必要があります。この情報は、「Amazon EKS アドオンの設定」で確認できます。Amazon EKS が管理するフィールドを変更すると、Amazon EKS はアドオンを管理できなくなります。Amazon EKS は、アドオンが更新されたときに変更を上書きすることがあります。
解決策
次の解決策は、CoreDNS のセルフマネージドアドオンおよび Amazon EKS アドオンの設定に適用されます。
セルフマネージドアドオンを設定する
次のコマンドを実行して CoreDNS ConfigMap を変更し、カスタム DNS 条件付きフォワーダーの設定を追加します。
$ 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 アドレスに置き換えてください。
Amazon EKS アドオンを設定する
Amazon EKS マネージド CoreDNS アドオンに変更を加えるには、次の手順を実行します。
-
Amazon EKS コンソールを開きます。
-
ナビゲーションペインで、[クラスター] を選択します。
-
クラスターの名前を選択します。
-
[アドオン] タブを選択します。
-
CoreDNS アドオンを選択し、[編集] を選択します。
-
編集ページで、[オプションの設定] セクションを選択します。[設定値] セクションで、カスタム DNS 条件付きフォワーダーの設定を追加します。
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 アドレスに置き換えてください。
ドメイン名解決を確認する
ドメイン名解決が機能することを確認するには、次のコマンドを実行します。
$ kubectl run busybox --restart=Never --image=busybox:1.28 -- sleep 3600
$ kubectl exec busybox -- nslookup domain-name
注: domain-name を自身のドメイン名に置き換えてください。