k8s record.EventRecorder

event对应各类事件,比如删除pod,创建pod,所以如果有类似功能的模块,肯定会有eventrecord数据结构的。比如rc,在发现rc的参数和实际pod数量不一致,则调用kubeclient的api删除pod,并发布event

func (r RealPodControl) DeletePod(namespace string, podID string, object runtime.Object) error {
   accessor, err := meta.Accessor(object)
   if err != nil {
      return fmt.Errorf("object does not have ObjectMeta, %v", err)
   }
   if err := r.KubeClient.Core().Pods(namespace).Delete(podID, nil); err != nil {
      r.Recorder.Eventf(object, api.EventTypeWarning, "FailedDelete", "Error deleting: %v", err)
      return fmt.Errorf("unable to delete pods: %v", err)
   } else {
      glog.V(4).Infof("Controller %v deleted pod %v", accessor.GetName(), podID)
      r.Recorder.Eventf(object, api.EventTypeNormal, "SuccessfulDelete", "Deleted pod: %v", podID)
   }
   return nil
}

 

发布event其实通过event的函数发送给api server进行存储。通过eventBroadcaster.StartRecordingToSink()入参指定event发到哪

func (e *events) Create(event *api.Event) (*api.Event, error) {
   if e.namespace != "" && event.Namespace != e.namespace {
      return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.namespace)
   }
   result := &api.Event{}
   err := e.client.Post().
      Namespace(event.Namespace).
      Resource("events").
      Body(event).
      Do().
      Into(result)
   return result, err
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值