我想监听集群内部署的add事件,我用的是client-go Watch Api,刚开始运行的很好,但是过不了多久就会报错。
我尝试了两种 API 方式来收听
一种方式:
func startWatchDeployment(clientSet *kubernetes.Clientset){
defer func() {
err := recover()
if err != nil {
fmt.Println(err)
}
}()
Log.Info("????deployment...")
count := 0
deploymentsClient := clientSet.AppsV1beta1().Deployments(metav1.NamespaceAll)
list,_ := deploymentsClient.List(metav1.ListOptions{})
items := list.Items
w, _ := deploymentsClient.Watch(metav1.ListOptions{})
for {
select {
case e, _ := <-w.ResultChan():
Log.Infof("162: %s",e)
if e.Type == watch.Added || e.Type == watch.Deleted{
if count != len(items){
count += 1
}else{
// go?reflect??????struct
nname := e.Object.(*v1beta1.Deployment).Namespace
if r, _ := regexp.Compile("^(p|u|user)-");nname != "default" …Run Code Online (Sandbox Code Playgroud)