当修改/etc/kubernetes/
下的配置时,配置会自动生效。其原理就是所有kubernetes服务会watch默认配置文件,当文件发生改动时,加载配置。
watch文件改动所使用的库是: github.com/fsnotify/fs…
code
监控/tmp/foo
文件路径的改动,并打印出事件类型
package main
import (
"log"
"github.com/fsnotify/fsnotify"
)
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
log.Println("event:", event)
if event.Op&fsnotify.Write == fsnotify.Write {
log.Println("modified file:", event.Name)
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.Println("error:", err)
}
}
}()
// watch file path /tmp/foo
err = watcher.Add("/tmp/foo")
if err != nil {
log.Fatal(err)
}
<-done
}
test
改动/tmp/foo文件内容,观察输出:
2022/06/16 09:42:16 event: "/tmp/foo": WRITE
2022/06/16 09:42:16 modified file: /tmp/foo
2022/06/16 09:42:26 event: "/tmp/foo": REMOVE
^Csignal: interrupt