在informer
的实现中,可以提供如下所示的事件处理程序。
podInformer.AddEventHandler(cache.ResourceEventHandlerFuncs {
// When a new pod gets created
AddFunc: func(obj interface{}) {
k8s.handleAddPod(obj)
},
// When a pod gets updated
UpdateFunc: func(oldObj interface{}, newObj interface{}) {
k8s.handleUpdatePod(oldObj, newObj)
},
// When a pod gets deleted
DeleteFunc: func(obj interface{}) {
k8s.handleDeletePod(obj)
},
})
这是一个处理Pod
相关事件的示例事件处理程序。到目前为止,我已经编写了如下处理程序;但是,它无法读取对象。
我无法将obj interface{}
类型转换为v1.Pod
,并且尝试读取它失败。标志ok
的值来自false
。有人能建议一下这段代码中遗漏了什么吗?
func (k8s *K8S) handleAddPod(obj interface{}) {
pod, ok := obj.(v1.Pod)
if ok {
log.Debug("Status: " + string(pod.Status.Phase))
log.Debug("Pod added: " + pod.Name + " " + pod.DeletionTimestamp.String())
}
}
发布于 2019-08-12 14:11:00
我可以使用下面的代码读取obj
的值和内容。
func (k8s *K8S) handleAddPod(obj interface{}) {
pod, ok := obj.(*v1.Pod) // Added * here.
if ok {
log.Debug("Status: " + string(pod.Status.Phase))
log.Debug("Pod added: " + pod.Name + " " + pod.DeletionTimestamp.String())
}
}
https://stackoverflow.com/questions/57455768
复制相似问题