我想观察kubernetes集群中命名空间的更改,代码如下:
...
log.Infoln("====== 1 ======= ")
namespaces, err := clientset.Namespaces().List(api.ListOptions{Watch: true})
if err != nil {
log.Errorln("Get namespaces from kubernetes cluster error:%v", err)
}
log.Infoln("====== 2 ======= ")
for _, namespace := range namespaces.Items {
log.Println("=======>> namespaces: ", namespace)
}
...
此代码将在namespaces, err := clientset.Namespaces().List(api.ListOptions{Watch: true})
处阻止。但是当我创建新的命名空间时,没有响应删除命名空间。
client-go
为k8s.io/client-go/1.5/
任何人都可以为我提供示例代码,谢谢。
答案 0 :(得分:0)
我得到了答案:
var watch watch.Interface
if watch, err = clientset.Namespaces().Watch(api.ListOptions{Watch: true}); err != nil {
log.Errorln("Watch namespaces from kubernetes cluster error:%v", err)
return
}
eventChan := watch.ResultChan()
for event := range eventChan {
log.Infoln(event)
}