如何正确使用 kubectl 来查明是否所有具有特定标签的部署都已完成?
How do I use kubectl properly to find out if all deployments with specific label completed?
我需要查明是否所有具有 label=a 的部署都处于 READY 状态?示例如下。我需要 return true 或 false 基于所有部署是否准备就绪?我可以解析文本,但我认为只有 kubectl 和 json 路径或其他东西
可能会有更聪明的方法
PS C:\Users\artis> 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
,例如 -o jsonpath='{range .items[*]}{.status.conditions[?(@.type == "Available")].status}{"\n"}{end}'
。你不能在 JSONPath 中进行逻辑操作,所以你需要像 | grep False
之类的外部过滤。
kubectl get deploy -l foo=bar -o json
| jq -r '[.items[]|select(.status.readyReplicas!=.status.replicas)]|length'
if != 0 那么有些东西还没有准备好
你也可以这样做。 readyReplicas > 0
如果一个就足以满足您的需求,无论有多少个都应该准备好处于所需状态
我需要查明是否所有具有 label=a 的部署都处于 READY 状态?示例如下。我需要 return true 或 false 基于所有部署是否准备就绪?我可以解析文本,但我认为只有 kubectl 和 json 路径或其他东西
可能会有更聪明的方法PS C:\Users\artis> 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
,例如 -o jsonpath='{range .items[*]}{.status.conditions[?(@.type == "Available")].status}{"\n"}{end}'
。你不能在 JSONPath 中进行逻辑操作,所以你需要像 | grep False
之类的外部过滤。
kubectl get deploy -l foo=bar -o json
| jq -r '[.items[]|select(.status.readyReplicas!=.status.replicas)]|length'
if != 0 那么有些东西还没有准备好
你也可以这样做。 readyReplicas > 0
如果一个就足以满足您的需求,无论有多少个都应该准备好处于所需状态