如何正确使用kubectl来确定是否所有带有特定标签的部署都已完成



我需要了解是否所有标签为a的部署都处于就绪状态?示例如下。我需要根据所有部署是否已就绪返回true或false?我可以解析文本,但我认为可能有一种更聪明的方法,只使用kubectl和json路径或

PS C:Usersartis> kubectl get deployment -n prod -l role=b
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
apollo-api-b   0/3     3            0           107s
esb-api-b      0/3     3            0           11m
frontend-b     3/3     3            3           11m

添加-o yaml以查看每个对象的YAML对象,然后可以使用这些对象来构建类似-o jsonpath='{range .items[*]}{.status.conditions[?(@.type == "Available")].status}{"n"}{end}'-o jsonpath。您不能在JSONPath中进行逻辑运算,因此需要像| grep False之类的外部过滤。

kubectl get deploy -l foo=bar -o json 
| jq -r '[.items[]|select(.status.readyReplicas!=.status.replicas)]|length'

if!=0然后有些东西还没有准备好你也可以做ie.readyReplicas > 0,如果一个足够满足你的需求,而不管有多少应该在所需的状态中准备好

最新更新