kubernetes
eks

EKSのkube-dnsをカスタマイズしてクラスタのドメイン名を変える

複数クラスタを扱いたいとなった場合に、クラスタのドメインを変えたくなるはず。EKSではkube-dnsは自動で構築されるのだが、kubectl editで設定をいじれそうだったので変更してみた話。結果ドメイン名を編集できた。


ドメイン名の変更

ドメイン名はデフォルトだとcluster.local.になっているので以下のように変更してみた。

## viが開くので .cluster.local => paper2.io に変更

$ kubectl edit -n kube-system deployment.apps/kube-dns
deployment.apps/kube-dns edited


確認

testpodの中からdigで引ける。

[root@testpod1 /]# dig paper2.io

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> paper2.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63754
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;paper2.io. IN A

;; AUTHORITY SECTION:
paper2.io. 60 IN SOA ns.dns.paper2.io. hostmaster.paper2.io. 1536141600 28800 7200 604800 60

;; Query time: 2 msec
;; SERVER: 10.100.0.10#53(10.100.0.10)
;; WHEN: Wed Sep 05 10:11:32 UTC 2018
;; MSG SIZE rcvd: 108

試しにpodがkube-dnsにしっかり登録されているかも確認してみた。

[root@testpod1 /]# nslookup 192-168-230-202.default.pod.paper2.io.

Server: 10.100.0.10
Address: 10.100.0.10#53

Name: 192-168-230-202.default.pod.paper2.io
Address: 192.168.230.202

大丈夫そう。


変えていいのか

うまく変更できているように見える。ただ私はマスターの設定でドメイン名を設定する場所があるかなどを把握していないので不具合が起きないかはわかりません。SlackのkubernetesのEKSチャンネルで変更しても大丈夫か聞いてみたけど回答もらえず。

ひとまず思いつく場所としては、クラスタードメインはkubeletでも指定できるので起動オプションを変更する必要がある。それ以外は不明。使う場合は追加の検証が必要そう。