使用kubectl get <resource-name> 命令查询时打印就绪状态的所有资源类型的通用答案。
kubectl get pod |grep -P '\s+([1-9]+)\/\1\s+'
例子:
kubectl get pod
NAME READY STATUS RESTARTS AGE
app_1 1/1 Running 0 77m
app_2 1/1 Running 0 77m
app_3 0/1 Completed 0 77m
app_4 1/1 Running 0 77m
app_5 8/8 Running 0 77m
app_6 4/4 Running 1 77m
app_7 1/1 Running 0 77m
app_8 1/1 Running 0 77m
app_9 1/1 Running 0 77m
app_10 1/1 Running 0 77m
app_11 1/1 Running 0 77m
app_12 1/1 Running 0 77m
app_13 1/1 Running 0 75m
app_14 2/2 Running 0 77m
app_15 2/2 Running 0 77m
app_16 2/2 Running 0 76m
app_17 4/8 Running 0 77m
app_18 1/1 Running 0 77m
app_19 1/1 Running 0 77m
app_20 1/1 Running 0 77m
app_21 1/1 Running 0 77m
app_22 2/2 Running 0 77m
app_23 3/3 Running 0 77m
app_24 1/1 Running 0 77m
app_25 1/1 Running 0 77m
app_26 1/1 Running 0 77m
app_27 1/1 Running 0 77m
app_28 2/2 Running 0 77m
示例输出:
kubectl get pod| grep -P '\s+([1-9]+)\/\1\s+'
app_1 1/1 Running 0 77m
app_2 1/1 Running 0 77m
app_4 1/1 Running 0 77m
app_5 8/8 Running 0 77m
app_6 4/4 Running 1 77m
app_7 1/1 Running 0 77m
app_8 1/1 Running 0 77m
app_9 1/1 Running 0 77m
app_10 1/1 Running 0 77m
app_11 1/1 Running 0 77m
app_12 1/1 Running 0 77m
app_13 1/1 Running 0 75m
app_14 2/2 Running 0 77m
app_15 2/2 Running 0 77m
app_16 2/2 Running 0 76m
app_18 1/1 Running 0 77m
app_19 1/1 Running 0 77m
app_20 1/1 Running 0 77m
app_21 1/1 Running 0 77m
app_22 2/2 Running 0 77m
app_23 3/3 Running 0 77m
app_24 1/1 Running 0 77m
app_25 1/1 Running 0 77m
app_26 1/1 Running 0 77m
app_27 1/1 Running 0 77m
app_28 2/2 Running 0 77m
打印未处于就绪状态的资源:
kubectl get pod |grep -Pv '\s+([1-9]+)\/\1\s+'
NAME READY STATUS RESTARTS AGE
app_3 0/1 Completed 0 77m
app_17 4/8 Running 0 77m
对grep命令感兴趣的人,推荐阅读正则表达式中“捕获组”和“反向引用”的概念。但是,这里添加了一个简短的描述。
\s+([1-9]+)\/\1\s+
解释:
\s 匹配任何空白字符
+ 匹配前一个令牌一次到无限次,尽可能多次
1st抓捕组([1-9]+)
匹配下面列表中的单个字符[1-9]
+ 匹配前一个令牌一次到无限次,尽可能多次
1-9 匹配 1 和 9 范围内的单个字符
\/ 匹配字符 / 字面意思
\1 匹配与第一个捕获组最近匹配的相同文本,在本例中为 [1-9]+
\s 匹配任何空白字符
+ 匹配前一个令牌,介于 1 和 unlimit 之间