当前位置: 首页 > news >正文

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

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

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

package mainimport ("flag""fmt""log""path/filepath"corev1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd"
)func main() {kubeconfig := filepath.Join("~", ".kube", "config")config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)if err != nil {log.Fatal(err)}clientset, err := kubernetes.NewForConfig(config)if err != nil {log.Fatal(err)}pods, err := clientset.CoreV1().Pods("default").List(context.Background(), metav1.ListOptions{})if err != nil {log.Fatal(err)}for _, pod := range pods.Items {fmt.Printf("Pod %s status: %s\n", pod.Name, pod.Status.Phase)events, err := clientset.CoreV1().Events(pod.Namespace).List(context.Background(), metav1.ListOptions{FieldSelector: fmt.Sprintf("involvedObject.name=%s", pod.Name),})if err != nil {log.Fatal(err)}for _, event := range events.Items {if event.Reason == "FailedScheduling" || event.Reason == "OutOfcpu" || event.Reason == "OutOfmemory" || event.Reason == "OutOfDisk" {fmt.Printf("Event: %s %s\n", event.Reason, event.Message)}}}
}

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

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

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

http://www.lryc.cn/news/318692.html

相关文章:

  • IDEA编译安卓源码TVBox(2)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明
  • 第十四届蓝桥杯省赛真题 Java 研究生 组【原卷】
  • adb shell input text 输入中文
  • Rudolf and the Ball Game
  • 计算机毕业设计-基于大数据技术下的高校舆情监测与分析
  • WPF使用LiveCharts画图时,横坐标转换成时间
  • Qt客户端开发的技术难点
  • 杰理AD155儿童玩具语音集成电路
  • git bash 命令行反应慢、卡顿(定位出根本原因)
  • Android 启动service(Kotlin)
  • Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
  • LlamaParse: 高效的PDF文件RAG解析工具
  • platform设备注册驱动模块的测试
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItemGroup)
  • Docker:常用命令
  • 如何搭建“Docker Registry私有仓库,在CentOS7”?
  • DBA面试题:MySQL缓存池LRU算法做了哪些改进?
  • idea+vim+pycharm的块选择快捷键
  • ansible 部署FATE集群单边场景
  • 融入Facebook的世界:探索数字化社交的魅力
  • stm32-定时器输出比较PWM
  • Redis对过期key的删除策略
  • http的body格式
  • Java Web开发从0到1
  • 002——编译鸿蒙(Liteos -a)
  • Ansible--详解
  • Django和Mysql数据库
  • [蓝桥杯]-最大的通过数-CPP-二分查找、前缀和
  • 安卓UI面试题 26-30