kubenetes源码分析之DNS(七)

第一篇说的DNS三剑客,已经介绍两个了。还差最后一个组件sidecar,它负责其他两个组件的监控服务。之所以叫sidecar:做轻快的双轮马车,是应为以前的exechealth只监控dnsmaq服务,而现在监控其它两个组件。代码相对不叫简单,先看服务启动:

func main() {
    options := sidecar.NewOptions()
    configureFlags(options, pflag.CommandLine)
    flag.InitFlags()

    logs.InitLogs()
    defer logs.FlushLogs()

    glog.Infof("Version v%s", version.VERSION)

    verflag.PrintAndExitIfRequested()

    server := sidecar.NewServer()
    server.Run(options)
}

和其它服务一样,先是解析参数,创建服务,启动服务。看看服务运行:

func (s *server) Run(options *Options) {
    s.options = options
    glog.Infof("Starting server (options %+v)", *s.options)

    for _, probeOption := range options.Probes {
        probe := &dnsProbe{DNSProbeOption: probeOption}
        s.probes = append(s.probes, probe)
        probe.Start(options)
    }

    s.runMetrics(options)
}

遍历探针,放到probes里面,然后启动探针。读者可能会有疑问这个probes有那些呢,看看官网给的启动sidecar例子

probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.__PILLAR__DNS__DOMAIN__,5,A
      probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.__PILLAR__DNS__DOMAIN__,5,A

提供了2个探针。分别监控kubedns的10053端口DNS服务和dnsmasq的53端口的DNS服务。
具体发送dns请求的方法(pkg/sidecar/dnsprobe.go):

func (p *dnsProbe) loop() {
    glog.V(4).Infof("Starting loop")
    p.delayer.Start(p.Interval)

    dnsClient := &dns.Client{}

    for {
        glog.V(4).Infof("Sending DNS request @%v %v", p.Server, p.Name)
        msg, latency, err := dnsClient.Exchange(p.msg(), p.Server)
        glog.V(4).Infof("Got response, err=%v after %v", err, latency)

        if err == nil && len(msg.Answer) == 0 {
            err = fmt.Errorf("no RRs for domain %q", p.Name)
        }

        p.update(err, latency)
        p.delayer.Sleep(latency)
    }
}

通过健康检查还可以提供给prometheus性能数据,关于prometheus后面会分析,现在只需了解他是一个监控数据采集和存储的组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳清风09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值