在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())
}
}
答案 0 :(得分:0)
我可以使用此代码读取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())
}
}