• 如何用client-go获取k8s因硬盘容量、cpu、内存、gpu资源不够引起的错误信息?


    在Kubernetes中,你可以使用client-go库来获取Pod的状态和事件,这些信息可能包含了由于资源不足引起的错误信息。

    以下是一个基本的示例,展示如何使用client-go来获取Pod的状态和事件:

    1. package main
    2. import (
    3. "flag"
    4. "fmt"
    5. "log"
    6. "path/filepath"
    7. corev1 "k8s.io/api/core/v1"
    8. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    9. "k8s.io/client-go/kubernetes"
    10. "k8s.io/client-go/tools/clientcmd"
    11. )
    12. func main() {
    13. kubeconfig := filepath.Join("~", ".kube", "config")
    14. config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
    15. if err != nil {
    16. log.Fatal(err)
    17. }
    18. clientset, err := kubernetes.NewForConfig(config)
    19. if err != nil {
    20. log.Fatal(err)
    21. }
    22. pods, err := clientset.CoreV1().Pods("default").List(context.Background(), metav1.ListOptions{})
    23. if err != nil {
    24. log.Fatal(err)
    25. }
    26. for _, pod := range pods.Items {
    27. fmt.Printf("Pod %s status: %s\n", pod.Name, pod.Status.Phase)
    28. events, err := clientset.CoreV1().Events(pod.Namespace).List(context.Background(), metav1.ListOptions{
    29. FieldSelector: fmt.Sprintf("involvedObject.name=%s", pod.Name),
    30. })
    31. if err != nil {
    32. log.Fatal(err)
    33. }
    34. for _, event := range events.Items {
    35. if event.Reason == "FailedScheduling" || event.Reason == "OutOfcpu" || event.Reason == "OutOfmemory" || event.Reason == "OutOfDisk" {
    36. fmt.Printf("Event: %s %s\n", event.Reason, event.Message)
    37. }
    38. }
    39. }
    40. }

    在这个示例中,我们首先获取了"default"命名空间中的所有Pod,然后对于每个Pod,我们获取了与该Pod相关的所有事件,并检查了这些事件的原因是否是"FailedScheduling"、"OutOfcpu"、"OutOfmemory"或"OutOfDisk"。

    注意,这个示例假设你的kubeconfig文件在"~/.kube/config"。如果你的kubeconfig文件在其他地方,你需要修改这个示例。

    另外,这个示例没有处理可能的错误,你可能需要添加额外的错误处理代码。

  • 相关阅读:
    16.一篇文章学会django模型的使用
    情满中秋᛫欢度国庆 | 联诚发与你共度佳节!
    MySQL 定时计划任务 事件的使用
    SQL—— 优化
    Laf 云开发平台及其实现原理
    return的用法是什么?若用在for循环中,还会执行下一次循环吗?
    Unity与安卓⭐三、Unity报错合集
    createjs新手教程-前端向(一)
    【网关路由测试】——网关状态转换测试
    「C++系列」C++简介、应用领域
  • 原文地址:https://blog.csdn.net/yangyin007/article/details/136748116