首页 > 解决方案 > Kubernetes 并不总是在请求时创建事件

问题描述

我有一个程序,我定期尝试创建 kubernetes 事件来跟踪正在进行的操作的状态。

我使用注释创建事件,并将部署作为所有者,因为我希望事件不与可以删除的 pod 绑定。

我使用录音机拨打电话:

import "k8s.io/client-go/tools/record"

var recorder record.EventRecorder

func eventRecorder(
    KubeClient *K8sCsStruct) record.EventRecorder {
    eventBroadcaster := record.NewBroadcaster()
    eventBroadcaster.StartRecordingToSink(
        &typedcorev1.EventSinkImpl{
            Interface: KubeClient.Clientset.CoreV1().Events(namespace)})
    recorder := eventBroadcaster.NewRecorder(
        scheme.Scheme,
        v1.EventSource{Component: "controlplane"})
    return recorder
}

    recorder = eventRecorder(KubeClient)

   recorder.AnnotatedEventf(ref, annotations, eventType, "GoodReason", msg)

我面临的问题是,有时 Kubernetes 似乎会忽略创建事件的请求。

我做了一些试验和错误,发现注释的数量越少,创建事件的可能性就越大,但我怀疑这可能是真正的原因。

有没有一种方法可以在 Kubernetes 中进行跟踪以确定为什么它有时会接受事件请求而有时会忽略它?是否与 Kubernetes 认为该事件是现有事件的重复有关?

是否可以设置任何参数以使创建更有可能,例如某种类型的重复检查代码?

任何指针将不胜感激。

标签: kuberneteseventsrecorder

解决方案


推荐阅读