微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查看低于 5 天的错误 pod

如何解决查看低于 5 天的错误 pod

我需要在所有列中列出 5 天以下的错误 pod。我试过下面的命令,但没有运气。我得到了一些随机的豆荚和年龄。有人可以帮助只获取 5 天以下的错误 pod。

kubectl get pod --all-namespaces --sort-by=.Metadata.creationTimestamp | awk 'match($5,/[1-5]+d/) {print $0}' | grep "Error"


NAME               READY   STATUS      RESTARTS   AGE
pod1                0/1     Error       0          63d
pod2                0/1     Error       0          24d
pod3                0/1     Error       0          11d
pod4                0/1     Error       0          4d16h
pod5                0/1     Error       0          15h

解决方法

在回答您的问题时,我想指出4 件不同的事情

首先,你的例子中正则表达式的使用是不正确的。以下正则表达式:

[1-5]+d

不仅会匹配 1d2d3d4d5d,而且还会匹配 63d24d。为什么 ?首先,因为您使用了 + quantifier,它重复上一项或多次。所以如果您有这样的 345d,它甚至会匹配 Pods在您的 k8s 集群中运行。其次,您没有指定它应该从 1 到 5 之间的数字开始,它只是说它应该出现在匹配字符串中的某个地方(例如最后),因此 [1-5]d 也将匹配 {{1 }} 因为它将能够在其中找到 63d。这个正则表达式的正确形式如下:

3d

这里我们指定它应该只匹配以 1 到 5 范围内的一位数字开头,后跟 ^[1-5]d 字符的字符串。

因此您的命令的 d 部分可能如下所示:

awk

第二,注意跑的时候:

awk 'match($5,/^[1-5]d/) {print $0}' 带有 kubectl get pod 标志,输出包含 6 列,而不是 5 列,正如 Krishna Chaurasia 在评论中已经提到的那样。添加了带有 --all-namespaces 标题的附加列。比较以下 2 个结果:

NAMESPACE

$ kubectl get pods
NAME                                READY   STATUS             RESTARTS   AGE
my-release-mysql-0                  1/1     Running            0          12d

$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default my-release-mysql-0 1/1 Running 0 12d 成为第 6 列,因此您的命令(或特别是它的 AGE 部分)应该在列 awk 上执行匹配:

$6

第三,对于你的命令的最后一部分,即:

awk 'match($6,/^[1-5]d/) {print $0}'

这样的过滤可以通过基于 grep "Error" kubectl 完成,例如:

--field-selector

第四,应该注意的是,在您的示例中,您过滤掉了所有 kubectl get pods --field-selector=status.phase=Pending --sort-by=.metadata.creationTimestamp | awk 'match($5,/^[1-5]d/) {print $0}' ,其中 Pods 以其他单位(如 AGE)计算, hoursminutes。如果是有意的,请忽略下一段。

但是,如果您不想过滤掉所有较新的 seconds,其中 Pods 不能计入 AGE,您可以修改您的命令,使其显示 days Pods1-5 days 前创建的:

any number of seconds/minutes/hours

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?