in cmd/node-cache/app/configmap.go [160:204]
func (c *CacheApp) initDNSConfigSync() {
var syncList []*syncInfo
var kubeDNSChan, NodeLocalDNSChan <-chan *config.Config
initialKubeDNSConfig := &config.Config{}
if c.params.KubednsCMPath == "" {
if _, err := os.Stat(DefaultKubednsCMPath); !os.IsNotExist(err) {
c.params.KubednsCMPath = DefaultKubednsCMPath
}
}
if c.params.KubednsCMPath != "" {
c.kubednsConfig.ConfigDir = c.params.KubednsCMPath
syncList = append(syncList, &syncInfo{configName: "kube-dns",
filePath: c.kubednsConfig.ConfigDir,
period: c.kubednsConfig.ConfigPeriod,
updateFunc: c.updateCorefile,
chanAddr: &kubeDNSChan,
})
} else {
clog.Infof("Skipping kube-dns configmap sync as no directory was specified")
}
syncList = append(syncList, &syncInfo{configName: "node-local-dns",
filePath: path.Dir(c.params.BaseCoreFile),
period: DefaultConfigSyncPeriod,
chanAddr: &NodeLocalDNSChan,
})
for _, info := range syncList {
configSync := config.NewFileSync(info.filePath, info.period)
initialConfig, err := configSync.Once()
if err != nil {
clog.Errorf("Failed to sync %s config directory %s, err: %v", info.configName, info.filePath, err)
continue
}
if info.updateFunc != nil {
info.updateFunc(initialConfig)
}
if info.configName == "kube-dns" {
initialKubeDNSConfig = initialConfig
}
*(info.chanAddr) = configSync.Periodic()
}
go c.syncDNSConfig(kubeDNSChan, NodeLocalDNSChan, initialKubeDNSConfig)
}