coredns使用etcd存储解析域名
目录etcd部署写记录coredns配置文件部署解析etcd写入的记录dig方式nslookup方式为了方便测试使用docker部署etcd和coredns.etcd部署docker run -d --network host -e ETCDCTL_API=3 --restart always \-v /var/lib/it/data/etcd:/etcd-data \--name etcd qu
目录
为了方便测试使用docker部署etcd和coredns.
etcd
部署
docker run -d --network host -e ETCDCTL_API=3 --restart always \
-v /var/lib/it/data/etcd:/etcd-data \
--name etcd quay.io/coreos/etcd:latest \
/usr/local/bin/etcd \
--data-dir=/etcd-data --name node1 \
--initial-advertise-peer-urls http://0.0.0.0:2380 --listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://0.0.0.0:2379 --listen-client-urls http://0.0.0.0:2379 \
--initial-cluster node1=http://0.0.0.0:2380
etcd使用的api是v3版本,官方说明在这:https://coredns.io/plugins/etcd/#examples
Before getting started with these examples, please setup etcdctl (with etcdv3 API) as explained here. This will help you to put sample keys in your etcd server.
因此在使用docker启动etcd的时候使用环境变量-e ETCDCTL_API=3指定当前etcd api需要使用的版本。
我把etcd里面的数据挂载出来了,这个可以随意的。
写记录
进入到etcd容器内部,使用etcdctl命令操作
/ # etcdctl version
etcdctl version: 3.3.8
API version: 3.3
/ # etcdctl put /skydns/com/dynamic/coredns '{"host":"10.10.13.5", "port":8082}'
OK
/ # etcdctl get /skydns/com/dynamic/coredns
/skydns/com/dynamic/coredns
{"host":"10.10.13.5", "port":8082}
coredns
配置文件
准备coredns配置文件,配置文件的文档在这:https://coredns.io/2017/07/23/corefile-explained/
.:53 {
etcd {
stubzones
path /skydns
endpoint http://<etcd-ip>:2379
upstream 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf
}
health
log
errors
cache 30
reload 10s
}
如果是需要特定的域访问,如registry.local。则对应的Corefile文件配置如下
registry.local {
etcd {
stubzones
path /skydns
endpoint http://<etcd-ip>:2379
upstream 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf
}
health
log
errors
cache 30
reload 10s
}
只是为了测试etcd作为存储后端,配置文件就只涉及了与etcd相关的内容。记得替换配置文件中的<etcd-ip>为部署etcd服务的ip地址。
部署
docker run -d --restart always --name coredns --network host -v /etc/coredns/Corefile:/Corefile coredns/coredns:1.8.3
建议使用最新版本的coredns(1.8.3),一开始我使用的是1.5.0版本,老是无法正常解析etcd里面添加的数据记录。
解析etcd写入的记录
使用coredns来解析之前在etcd里面创建的记录:/skydns/com/dynamic/coredns '{"host":"10.10.13.5", "port":8082}'。
dig方式
[root@storage coredns]# dig @10.10.13.12 coredns.dynamic.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> @10.10.13.12 coredns.dynamic.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4762
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;coredns.dynamic.com. IN A
;; ANSWER SECTION:
coredns.dynamic.com. 30 IN A 10.10.13.5
;; Query time: 78 msec
;; SERVER: 10.10.13.12#53(10.10.13.12)
;; WHEN: Fri Mar 12 10:38:32 UTC 2021
;; MSG SIZE rcvd: 83
不熟悉的命令可在https://www.linuxcool.com/ 进行查询。
因为当前机器已经有别的dns server了,因此我在使用dig的时候指定了使用部署了coredns服务的服务器作为dns server。
nslookup方式
[root@storage coredns]# nslookup coredns.dynamic.com 10.10.13.12
Server: 10.10.13.12
Address: 10.10.13.12#53
Name: coredns.dynamic.com
Address: 10.10.13.5
更多推荐
所有评论(0)