这两个软件之前见到都是在k8s容器管控里面见到。

实际用非容器测试了才发现,果然是简洁明了,自身就一个可执行文件,太适合打包进微服务了。

coredns 官网下载编译好的二进制,发现就一个可执行文件。运行也很简单,不带任何参数直接运行就前台运行了

实际运行还是需要配置conf文件(配置文件需要和coredns运行时的目录在一个目录如果放到rc.local里面 需要写成/root/dns/coredns -conf /root/dns/Corefile 这样,否则默认在/目录下去找Corefile文件去了),比如

.:53 {                                              
    etcd {                              
        path /skydns                    
        endpoint http://localhost:2379  
        fallthrough
    }
    prometheus                          
    cache 160
    loadbalance                         
    forward . 114.114.114.114
    log                                 
}

这个是网上白嫖的示例。

示例由服务器块组成,服务器块以zone开头,后面可接监听端口号比如 okd.example.com:5555  {}

表示okd.example.com这个域的解析,在5555端口上监听,并由{}里面的配置完成解析。

.:53 表示根以下所有域的解析(点在dns里面表示根域)在53端口监听,里面的etcd表示首先由etcd来解析, forward表示etcd解析不了的(有fallthrough),转发到公网去。

配置文件也很简单,coredns默认编译进了很多插件,解析从前到后,如果第一部分解析不了,配置了fallthrough,那么就以此让后面的插件来解析

说到etcd,又引出另一个微服务里面的组件了。etcd也超级简单,官网下载的编译好的二进制包解压得到etcd etcdctl etcdutl三个可执行文件,起服务直接运行etcd就可以,他自动监听本地2379端口。然后用etcdctl来进行存取。

alias etcdctlv3='ETCDCTL_API=3 etcdctl'
etcdctlv3 put /skydns/com/example/okd/shareservice '{"host":"192.168.5.175", "ttl":60}'
etcdctlv3 get /skydns/com/example/okd/shareservice

遍历所有键值

etcdctlv3 get / --prefix 

增加DNS反解

etcdctlv3 put /skydns/arpa/in-addr/192/168/5/180 '{"host":"www.example.com", "ttl":60}'

 挺有意思,本来反解就是反着写的,结果负负得正了,正着写了,哈哈

手工操作后发现这个就是一个键-值存取软件。你存入一对键-值,然后get键,他返回值给你。这真是太简单了,就干这一件事,但这正是微服务的思想所在,每一个组件就干一件事。这样方便进行横向扩展以及容器化部署和运维。

这样通过etcd的接口可以动态修改键值,也就变相的动态更新DNS的记录了,因为coredns调用etcd插件来解析。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐