go - 如何使用 client-go API 从 Kubernetes 的 pod 获取事件消息?

标签 go kubernetes client-go

我如何从 pod 获取事件消息,例如使用 client-go Kubernetes API 的命令:

kubectl describe pod spark-t2f59 -n spark

Events:
  Type     Reason             Age   From                Message
  ----     ------             ----  ----                -------
  Warning  FailedScheduling   104s  default-scheduler   0/19 nodes are available: 15 Insufficient cpu, 19 Insufficient memory.
  Warning  FailedScheduling   104s  default-scheduler   0/19 nodes are available: 15 Insufficient cpu, 19 Insufficient memory.
  Warning  FailedScheduling   45s   default-scheduler   0/20 nodes are available: 16 Insufficient cpu, 20 Insufficient memory.
  Warning  FailedScheduling   34s   default-scheduler   0/20 nodes are available: 16 Insufficient cpu, 20 Insufficient memory.
  Normal   NotTriggerScaleUp  97s   cluster-autoscaler  pod didn't trigger scale-up (it wouldn't fit if a new node is added): 1 Insufficient memory, 1 max node group size reached

有没有办法获得相同的事件输出,但使用 client-go 而不是 kubectl??

最佳答案

既然您知道命名空间和 pod 名称,您可以:

package main

import (
    "context"
    "fmt"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/rest"
)

func main() {
    config, _ := rest.InClusterConfig()
    clientset, _ := kubernetes.NewForConfig(config)
    events, _ := clientset.CoreV1().Events("spark").List(context.TODO(),metav1.ListOptions{FieldSelector: "involvedObject.name=spark-t2f59", TypeMeta: metav1.TypeMeta{Kind: "Pod"}})
    for _, item := range events.Items {
        fmt.Println(item)
    }
}

关于go - 如何使用 client-go API 从 Kubernetes 的 pod 获取事件消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69790386/

相关文章:

go - Golang中如何导入KFServing客户端包

csv - 将 slice 附加到 csv golang

amazon-web-services - 更改Kops部署样式

kubernetes - 改变准入 webhook 静态命名空间选择器

git - kubernetes仪表板无法启动

kubernetes - 如何处理K8s go client informer错误事件

go - 自定义 Controller 在缓存同步之前对 addfunc 事件处理程序使用react?这种行为是否正确?

golang cgo无法通过构建模式c-shared导出变量

go - 链接 CAS 中间件和 httprouter() 路由

xml - Golang - 使用 attr 解码 XML