• 如何用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文件在其他地方,你需要修改这个示例。

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

  • 相关阅读:
    前缀和与差分
    Spring - BeanPostProcessors 扩展接口
    计算机网络---第一章
    Scala生成ip和Mac
    深入浅出-多进程编程
    mysql中有isolated transaction吗举例说明
    NPM- 滚动进度可视化插件
    XBanner源码详解
    解决github无法访问,访问慢或者图裂问题
    2022年 - 年中总结
  • 原文地址:https://blog.csdn.net/yangyin007/article/details/136748116