我使用kubectl来获取一个pod列表:
kubectl get pods --selector=artifact=boot-example -n my-sandbox
字符串
我得到的结果是:
NAME READY STATUS RESTARTS AGE
boot-example-757c4c6d9c-kk7mg 0/1 Running 0 77m
boot-example-7dd6cd8d49-d46xs 1/1 Running 0 84m
boot-example-7dd6cd8d49-sktf8 1/1 Running 0 88m
型
我想只获取那些“ready”(通过readinessProbe)的pod。有没有只返回“ready”pod的kubectl命令?如果不是kubectl命令,那么可能是其他方法?
8条答案
按热度按时间kgqe7b3p1#
您可以使用以下命令:
字符串
这将返回容器为“ready”的pod。
要在不使用grep的情况下执行此操作,可以使用以下命令:
型
这将返回“ready"的pod名称。
qco9c6ql2#
使用
kubectl get <resource-name>
命令查询时打印READY状态的所有资源类型的通用答案。字符串
示例如下:
型
样品输出:
型
要打印未处于就绪状态的资源,请执行以下操作:
型
对
grep
命令感兴趣的人建议阅读正则表达式中的“捕获组”和“反向引用”的概念。但是,这里添加了一个简短的描述。\s+([1-9]+)\/\1\s+
个说明:
\s
匹配任何空白字符+
匹配前一个令牌的次数为一次到无限次,尽可能多次1st
捕获组([1-9]+)
匹配以下列表中存在的单个字符
[1-9]
+
在一次到无限次之间匹配上一个令牌,1-9
尽可能多地匹配1
和9
\/
匹配字符/字面上,\1
与第一个捕获组(在本例中是[1-9]+
)最近匹配的相同文本匹配\s
匹配任意空格字符+
匹配1和unlimit之间的前一个标记wztqucjr3#
你可以尝试这个命令,它根据你的需要使用jq来转换kubectl json输出。
字符串
sqyvllje4#
您可以简单地使用本机
kubectl
CLI中的field-selector
选项过滤掉未运行的Pod:kubectl get pods --field-selector status.phase=Running
个通过使用本机CLI,您可以将自定义列过滤器作为同一个命令的一部分,以进行额外的输出自定义:
kubectl get pods --field-selector status.phase=Running --no-headers -o custom-columns=":metadata.name
个j5fpnvbx5#
在阅读了这里发布的答案并使用其中的一些作为参考(所以我的解决方案是从其他答案中派生出来的)之后,这里是我用来计算完全就绪的pod的方法(即运行(
status.phase=Running
)pod,其所有容器都处于就绪状态,(即containerStatuses[*].ready=true
))字符串
awk
删除具有一个或多个未就绪(即ready=false
)容器的pod--field-selector
,用于仅获取Running
podcustom-columns
用于打印自定义列,重要的是ready
列oiopk7p56#
字符串
polkgigr7#
这个简单的方法对我很有效。
这将仅列出完全就绪的pod。
字符串
这将检查这两个条件。
1.状态=正在运行
reg-ex的解释:
(\d+)
一次或多次出现的数字,括号表示第1组\/
后跟斜杠字符\1
与第一组的相同值再次匹配\s+
一个或多个空格Running
文字“Running”。这将确保READY列两侧具有相同的数字,如1/1或2/2等
下一个状态列应等于Running
gudnpqoy8#
@sjethvani
如果你愿意用jq..你可以用更好的跨平台支持做更多有趣的事情。像这样的东西比像jsonpath这样的东西限制少得多
字符串
样品
型