tit*_*nic 1 kubernetes kubectl
我很乐意列出具有mongodb
环境价值的部署及其阶段状态。有办法这样做吗?
使用此命令,我获得带有特定环境值的部署名称
kubectl get deploy -o=custom-columns="NAME:.metadata.name,SEC:.spec.template.spec.containers[*].env[*].value" | grep mongodb | cut -f 1 -d ' '
Run Code Online (Sandbox Code Playgroud)
输出:
app1
app2
app3
app4
Run Code Online (Sandbox Code Playgroud)
我想要得到的输出:
NAME READY UP-TO-DATE AVAILABLE AGE
app1 1/1 1 1 125d
app2 1/1 1 1 248d
app3 1/1 1 1 248d
app4 1/1 1 1 248d
Run Code Online (Sandbox Code Playgroud)
或者它也可以是 pod。我很感激你的帮助。
谢谢你!
我尝试使用解决方案,kubectl
但没有成功。
我怀疑(!?)您需要使用额外的工具来解析|处理结果以获得您想要的结果。也许使用jq
?
对于部署,您可以使用以下命令根据环境变量名称过滤结果:
FILTER="{.items[*].spec.template.spec.containers[*].env[?(@.name==\"mongodb\")]}"
kubectl get deployments \
--namespace=${NAMESPACE} \
--output=jsonpath="${FILTER}"
Run Code Online (Sandbox Code Playgroud)
但这仅返回过滤后的路径(即items[*].spec.template.spec.containers[*].env
)。
使用 JSONPath,您应该(!)能够将过滤器应用于该项目,但我不支持(通过 的kubectl
实现)即:
FILTER="{.items[?(@.spec.template.spec.containers[?(@.env[?(@.name==\"mongodb\")])])]}"
Run Code Online (Sandbox Code Playgroud)
有了jq
,我认为您将能够选择env.name
、返回 的状态并获取您需要的item
原始值。status
就像是:
FILTER='
.items[]
|select(.spec.template.spec.containers[].env[].name == "mongodb")
|{"name":.metadata.name, "ready":.status.readyReplicas}
'
kubectl get deployments \
--output=json \
| jq -r "${FILTER}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1413 次 |
最近记录: |